のえら

技術備忘とかメモとか.間違いはつっこんでいただきたい所存.

【未解決】jQueryでinputboxに特定の文字しか入力できないようにする

jQueryでinputboxに特定の文字しか入力できないようにする必要があって、書いてみたコード。

var charList = ["H", "O", "G", "E"];
$(function() {
  $("input.hoge-only").on("keypress", function(e) {
    if ($.inArray(String.fromCharCode(e.which), charList) == -1) {
      return false;
    }
  });
});

キーボードが押されたときにそのキーの文字を取得して、用意してあった特定の文字以外なら入力をキャンセルさせる、という感じ。
やぼったいなー、と思いつつ他の処理も思いつかないのでこれで対応してるんだけども。。うーん。

あと、最初はキーコードで判定しようと思ってやってみたんだけど、ブラウザによって微妙に異なるっぽいのと、fromCharCodeという便利なメソッドがあったのでやめた。


追記(20150309):
正規表現使うとこう?

var charList = /(H|O|G|E)/;
$(function() {
  // 特定のinputboxに入力制限を行う
  $("input.limit-char").on("keypress", function(e) {
    if ( !charList.test(String.fromCharCode(e.which)) ) {
      return false;
    }
  });
});


追記(20150310):
これ日本語入力対応してないな。。