2011-06-23 58 views
0

在我的MVC應用程序中,我有一些名稱字段,我想確保第一個字母是大寫,其餘都是小寫。 沒問題,你可以用這個; Html.TextBoxFor(型號=> model.Employee.Surname,新{風格=「文本轉換:大寫;」}如何強制在文本框中的字母外殼

那麼有2個問題與此; 1 /當你保存你的數據再次轉換文本CSS不會轉換底層數據,只能在屏幕上看到 2 /我的老闆決定第一次嘗試我的屏幕,並且她習慣性地使用這種形式的首都。她想要一個文本轉換來強制從第二個字母開始的下半部分,所以如果她鍵入SMITH,她希望看到Smith 我想知道如何做到這一點,如果看起來像需要一個客戶端事件,每個按鍵使此轉換。

回答

1

像這樣應該工作:

$(function() { 

    $(".field").blur(function() { 
     $(this).val($(this).val().substr(0,1).toUpperCase() + $(this).val().substr(1).toLowerCase()); 
    }); 

}); 

jsFiddle:http://jsfiddle.net/c5wCm/5/

+1

[改進版本](http ://jsfiddle.net/c5wCm/7/) – Raynos

+0

+1這是一個改進版本。這不是完美的,但它肯定會作爲解決方案衝浪。唯一的問題是,它不會轉換外殼,直到我選擇下一行。 – arame3333

+0

我個人不是表單字段的粉絲,因爲我在輸入內容時會改變我的值,除此之外,當Firefox的值比輸入的可見區域更長時,Firefox似乎會表現出奇怪的感覺,並顯示了值的開始反對carot的地方。 –

-2

嘗試此javascript:

Html.TextBoxFor(型號=> model.Employee.Surname,新的{@onkeypress = 「CASEL(此,事件);」}

Html.TextBoxFor(模型=> model.Employee.Surname,新的{@onkeypress = 「情況下(這種);」}

function caseL(obj, evt) { 
    /* 
    A lazy word capitaliser. 
    e.g onKeypress="caseL(this,event);" 
    */ 
    var iLen; 
    var key; 
    iLen = obj.value.length; 
    if (navigator.appName == 'Netscape') { 
     key = evt.charCode; 
     if ((key == 0) && (evt.which == 13)) { 
      //Enter key so suppress 
      evt.preventDefault(); 
     } 
    } else { 
     key = window.event.keyCode; 
     if (key == 13) { 
      //Enter key so suppress 
      window.event.cancelBubble = true; 
      window.event.returnValue = false; 
     } 
    } 
    if ((iLen == 0) || (obj.value.charAt(iLen - 1) == " ") || (obj.value.charAt(iLen - 1) == "-")) { 

     if ((key > 0x60) && (key < 0x7B)) { 
      if (navigator.appName == 'Netscape') { 
       key = key - 0x20; 
       var newEvent = document.createEvent("KeyEvents") 
       newEvent.initKeyEvent("keypress", true, true, document.defaultView, evt.ctrlKey, evt.altKey, evt.shiftKey, evt.metaKey, 0, String.fromCharCode(key).charCodeAt(0)) 
       evt.preventDefault() 
       evt.target.dispatchEvent(newEvent) 
      } else { 
       window.event.keyCode = key - 0x20; 
      } 
     } 
    } 
} 


function caseS(obj){ 
/* 
A strict word capitaliser. 
e.g onKeypress="caseS(this);" 
*/ 
var iLen; 
iLen=obj.value.length; 
key = window.event.keyCode; 
if((iLen>0)&&(obj.value.charAt(iLen-1)!=" ")&&(obj.value.charAt(iLen-1)!="-")){ 
    if ((key > 0x40) && (key < 0x5B)) 
    window.event.keyCode = key+0x20; 
    return true; 
} 
if ((iLen==0)||(obj.value.charAt(iLen-1)==" ")||(obj.value.charAt(iLen-1)=="-")){ 
    if ((key > 0x60) && (key < 0x7B)) 
    window.event.keyCode = key-0x20; 
} 
} 
+0

謝謝。那麼我嘗試了你的初始版本,我發現JavaScript方法並沒有得到首先要求的按鍵。我正在使用MVC2和IE8。 'navigator.appName =='Netscape''的 – arame3333

+0

-1。如果你打算推薦一些我會推薦的東西['underscore.string'](https://github.com/edtsech/underscore.string) – Raynos

+0

這是非常老的代碼,這就是爲什麼.. – Steve

相關問題