2016年1月31日 星期日

jQuery 欄位自動轉大寫完美解法


寫程式一定會遇到該死的欄位預設要幫使用者轉大寫,底下是使用 jQuery 完美的解法


$("#name, #address").css("text-transform", "uppercase").change(function(){
$(this).val($(this).val().toUpperCase());
});

name 與 address 是你欄位的名稱,只要一行,就可以一次讓多個欄位預設轉大寫

切記,切萬不要再用什麼鬼 keyup 事件再搭配 toUpperCase,因為…
當使用者用滑鼠從別的地方複制文字,再過來用滑鼠貼上,你就 GG 回家吃自己了

而且,如果你用 keyup 事件再 toUpperCase,會發現,想在文字的中間打段文字,滑鼠會一直鬼撞牆的移到最後!


原理其實就是幫 input 加上 style,比如
<input id="address" value="" style="text-transform:uppercase"/>

然後在 change 事件後再轉大寫,因為 style 只有看起來是大寫,必須自己轉大寫。