• ベストアンサー

テキストフィールドに半角数値以外入力させない方法…。

お世話になります! JavaScriptで、 function checkNum() {  c = String.fromCharCode(event.keyCode);  if ("0123456789".indexOf(c,0) < 0) alert("数値以外入力できません"); } と記述し、実行してみたのですが確かに数値以外は入力できないのですが BackSpaceやEnterキー、Tabキーを押した時にもアラートが発生します…。 本を見て、 function checkNum() {  c = String.fromCharCode(event.keyCode);  if ("0123456789".indexOf(c,0) < 0) return false; return true; } と記述すると、フォーム自体に半角数字しか入力できなくなると書いてあったのですが 実行しても普通に全角入力できました…。(泣) 何か方法ありますか?ご存知の方、宜しくご教授願います★ ちなみに、勿論<input>部分にonKeyDown="***()"の記述はしてますし JavaScriptが有効な状態での実行です。

質問者が選んだベストアンサー

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>BackSpaceやEnterキー、Tabキーを押した時にもアラートが発生します…。 ---------------------------------------------------------------- window.onload=function(){ document.form1.text1.onkeypress=checkNum; }; function checkNum(e){ if(!e){ e = event; e.which = e.keyCode; } if((48 > e.which || e.which > 57) && e.which > 31){ alert("数値以外入力できません"); return false; } return true; } … <input type="text" name="text1"> ---------------------------------------------------------------- の様にしてやれば、バックスペースなどは使えるようになります。 要点は、keyCode の範囲を指定してやることです。 全角入力については、どうも、onkeypress イベントが起こらないようなので、このイベントの中では処理できません。 入力されてしまった後、チェックするか、 #1の様にIMEを切るかしかないように思います。

fa_fa0321
質問者

お礼

ありがとうございます!!keyCodeの指定をする事でTabキーなども 使える様になりました!とても参考になりました☆有難うございます。

その他の回答 (1)

回答No.1

HTMLに以下のように書いてみてはいかがでしょうか。 <input type="text" name="aaaa" style="ime-mode:disabled;">

fa_fa0321
質問者

お礼

ありがとございます。IMEを切る方法はCSSでの記述で書いていたのですが、半角英数字のみの受け付けになりますよね?半角数字だけの受け付けにしてみたかったのですが…。これ以上無理なんでしょうか?

関連するQ&A