- ベストアンサー
テキストフィールドに半角数値以外入力させない方法…。
お世話になります! 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が有効な状態での実行です。
- みんなの回答 (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を切るかしかないように思います。
その他の回答 (1)
- acdehimnstwy
- ベストアンサー率52% (20/38)
HTMLに以下のように書いてみてはいかがでしょうか。 <input type="text" name="aaaa" style="ime-mode:disabled;">
お礼
ありがとございます。IMEを切る方法はCSSでの記述で書いていたのですが、半角英数字のみの受け付けになりますよね?半角数字だけの受け付けにしてみたかったのですが…。これ以上無理なんでしょうか?
お礼
ありがとうございます!!keyCodeの指定をする事でTabキーなども 使える様になりました!とても参考になりました☆有難うございます。