2014-12-23 31 views
0

我想用下面的.mask.mask與.toUpperCase()用於郵政編碼

$(document).ready(function() { 
    $('#postcode').mask('a9a 9a9'); 

}); 

還能對每次擊鍵力較低的情況下是大寫,但也允許小寫輸入(I不只是想設置掩碼的定義總是大寫),這是迄今爲止我嘗試沒有成功(這有點兒工作,但不保留光標位置)

$("#postcode").keyup(function (e) { 

      var this2 = $('#postcode').val().toUpperCase(); 

      $('#postcode').val(this2); 

     }); 
+0

不要使用'this'作爲變量名...永遠!遠離保留字。爲什麼在同一個元素上使用2種不同的方法來修改值?只需使用插件API方法 – charlietfl

+0

@charlietfl哪個API方法可以用來實現這個呢?爲郵政編碼屏蔽並強制大寫。 – Standage

+0

多年未使用該插件,查看源文件和/或文檔 – charlietfl

回答

1

工作版本我找到了一個解決方法,加入這個文本框:

style="text-transform: uppercase" 
1

變量this已被定義在keyup事件的範圍內d分配時可能導致你的問題。該版本保留光標位置。

上的jsfiddle here

$("#postcode").keyup(function() { 

    var ucase = $(this).val().toUpperCase() 
    $(this).val(ucase); 

}); 
+1

不保留光標位置,它將其移動到最後。 – nnnnnn

+0

@nnnnnn這是輸入字段的正常行爲。 – Threadid

+0

是啊,這是我的掩蓋以及這不解決問題 – Standage

1

我認爲這是更好的解決方案:

$(".editor-template__value").keyup(function (e) { 
    var start = e.target.selectionStart; 
    e.target.value = e.target.value.toUpperCase(); 
    e.target.selectionStart = e.target.selectionEnd = start; 
}); 

你的文字將變爲大寫字母並且光標位置不會改變。