HTML テキスト入力フィールドで、chrome ブラウザでも、とにかく!半角英数字だけの入力に制限したい!
CSS の ime-mode 属性が、IEでしか有効でないし、chrome ではダメなので、
入力された全角文字を半角に置き換えや判定などをよくやっていたもので
そんなものを書くのも煩わしくなってきた、
ネットで検索してたら、HTML5 の type="tel" に一時的に変える Javascript を見た。(・・・どこだったか忘れた)
たしかに、dirty なやり方だ。
貼り付け(paste) と、IME入力中を示すイベントキーコード=229 を捕捉して書くと、
以下のようになる。
$(function(){
$("input[type='text']").focus(function(){
$(this).prop('type','tel');
}).blur(function(){
$(this).prop('type','text');
}).bind("paste",function(){
return false;
}).keydown(function(eo){
if (eo.keyCode==229){
return false;
}
});
});