- ベストアンサー
数値以外の入力をさせないようにした後・・・
いつもお世話になっています。 ****************************************************************** <htm> <head> <script language=javascript> <!-- function checkNum() { c=String.fromCharCode(event.keyCode); if("0123456789".indexOf(c,0)<0)return false; return true; } //--> </script> </head> <body> <form> <input type="text" onKeyDown="return checkNum()"> <input type="submit"> </form> </body> </htm> ****************************************************************** 以上のソースでテキストボックス内に数値以外入力できないようにしました。 が、こうすると入力した値を消そうとしてもBackSpace・Deleteキーが使えないのです。 どうしたら入力制限をかけつつ、両キーを有効にできるのでしょうか。
- みんなの回答 (3)
- 専門家の回答
質問者が選んだベストアンサー
function keyCheck(keyCodes){ if((keyCodes >= 49 && keyCodes <= 57) || (keyCodes >= 96 && keyCodes <= 105) || keyCodes == 46 || keyCodes == 8) return true; else return false; } ONKEYDOWN="return keyCheck(event.keyCode);" コンナンデマシタケド~
その他の回答 (2)
- Ants
- ベストアンサー率50% (1/2)
function checkNum() { c=String.fromCharCode(event.keyCode); if("0123456789".indexOf(c,0)<0 && event.keyCode==「deleteキー値」 && event.keyCode==「backspaceキー値」){ return false; } return true; } とすればいかがでしょう?
お礼
ソースまで付けていただいてありがとうございます。 キーコード対応表を見ながら、deleteキー値・backspaceキー値にそれぞれ46,-8を入れて実行してみましたが エラーが出てしまいました(涙)。 けれど、Antsさんのソースにヒントを得て function KeysPress() { var k = window.event.keyCode; if ( k < 48 || k > 57 ) { window.event.keyCode = 0; } } と、やってみると動きました。 キーコードで操作する、というやり方を初めて知りました。すごい便利ですねぇ。 教えて頂いてありがとうございます。 これからもよろしくお願いします(ペコリ)。
珍しく1日くらい経っても回答が付いていないようなので・・・ よくCなどのプログラムでやる方法としてはDELETEやBACKSPACEのASCIIコードをその場合は数値と同じようにtrueを返すという風に追加してやることだと思います。 JavaScriptはあまり書かないので、書き方は分かりませんが、試してみる価値はあると思いますよ。 ではでは☆
お礼
お礼が遅くなってすみません。 Cは遠い昔に書いたっきりな上、ASCIIコードが何であるかがわからなかったので(・・・恥) すぐにピンとはきませんでしたが Antsさんのソースを見て意味がわかりました。 こういう方法があるんだなぁ、と感心させられました。 専門外っぽいのに回答して頂いてありがとうございました(ペコリ)。
お礼
切って貼って実行するだけの、ありがたいソースをありがとうございます。 46と8はdelとbackspaceのキーコード値というのはわかりましたが 96~105は何を指しているのでしょう? 私の手元にあるOnkeydownキーコード表は「'」と「a~i」を指しているのです。 おっと、それはまた別の質問になってしまうので、まず調べてみることにします。 丁寧かつ親切な回答をありがとうございました。 これからもよろしくお願いします(ペコリ)。