2013-06-26 47 views

回答

0

關於keyup函數,文本框是大寫的,但編輯光標位置時總是強制在大多數瀏覽器中結束。它像一個魅力

$(selector).on('keyup',function(){ 
    var start = this.selectionStart, 
     end = this.selectionEnd;  
     this.value = this.value.toUpperCase(); 
     this.setSelectionRange(start, end); 
}); 
3

keyup event。只是採用的方法轉換爲大寫

this.value.toUpperCase(); 

Check Fiddle

但是,如果你想要的文字,只是在提交數據之前是大寫。那麼最好是要轉換爲大寫一次,而不是在keyup event結合吧..

// submit here 
     var data = $('#input')[0].value.toUpperCase(); 

Change Event fiddle

$("input").on('keyup', function(e) { 
    if([8,37,38].indexOf(e.keyCode) > -1) { 
     return; 
    } 
    this.value = this.value.toUpperCase(); 
}); 

Another fiddle

您可以使用的鍵碼,檢查是否任退格鍵或方向鍵被按下。否則大寫或返回它。

+0

此解決方案不允許我去改變文本,因爲它使我回到文本框中的最後一個字母 – inputError

+0

然後將其應用於change事件,而不是'keyup' –

+0

它儘快在文本框失去焦點時大寫,但是我的內容我正在尋找是改變它爲大寫,因爲用戶輸入它 – inputError

1

你可以捕獲一個在keydown事件z和與AZ替換所選文本:的

function ucase(event, source) { 
     var evt = event ? event : window.event; 
     if (evt.keyCode >= 65 && evt.keyCode <= 90) { 
      textboxReplaceSelect(source, String.fromCharCode(evt.keyCode).toUpperCase()); 
      return false; 
     } 
     return true; 
    } 

    function textboxReplaceSelect(oTextbox, sText) { 
     var isOpera = navigator.userAgent.indexOf("Opera") > -1; 
     var isIE = navigator.userAgent.indexOf("MSIE") > 1 && !isOpera; 
     var isMoz = navigator.userAgent.indexOf("Mozilla/5.") == 0 && !isOpera; 
     if (isIE) { 
      var oRange = document.selection.createRange(); 
      oRange.text = sText; 
      oRange.collapse(true); 
      oRange.select(); 
     } else if (isMoz) { 
      var iStart = oTextbox.selectionStart; 
      oTextbox.value = oTextbox.value.substring(0, iStart) + sText + oTextbox.value.substring(oTextbox.selectionEnd, oTextbox.value.length); 
      oTextbox.setSelectionRange(iStart + sText.length, iStart + sText.length); 
     } 

     oTextbox.focus(); 
    } 

例如何調用它:

<input type="text" onkeydown="return ucase(event,this);" /> 

http://jsfiddle.net/YbD2N/4/

+0

此解決方案不起作用 – inputError

+0

我意識到它是特定於IE,我做了它所以它會在其他瀏覽器上運行,但是我無法測試,因爲我沒有在我的電腦上安裝任何其他的 –

+0

只有IE?這是一個新的。如果你害怕安裝一個真正的瀏覽器,那麼你可以使用袖珍歌劇,但是男人,請自己和我們討個忙... – dandavis

相關問題