• ベストアンサー

数値以外の入力をさせないようにした後・・・

いつもお世話になっています。 ****************************************************************** <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キーが使えないのです。 どうしたら入力制限をかけつつ、両キーを有効にできるのでしょうか。

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

  • ベストアンサー
  • makokoko
  • ベストアンサー率50% (7/14)
回答No.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);" コンナンデマシタケド~

lovelypooh
質問者

お礼

切って貼って実行するだけの、ありがたいソースをありがとうございます。 46と8はdelとbackspaceのキーコード値というのはわかりましたが 96~105は何を指しているのでしょう? 私の手元にあるOnkeydownキーコード表は「'」と「a~i」を指しているのです。 おっと、それはまた別の質問になってしまうので、まず調べてみることにします。 丁寧かつ親切な回答をありがとうございました。 これからもよろしくお願いします(ペコリ)。

その他の回答 (2)

  • Ants
  • ベストアンサー率50% (1/2)
回答No.2

function checkNum() { c=String.fromCharCode(event.keyCode); if("0123456789".indexOf(c,0)<0 && event.keyCode==「deleteキー値」 && event.keyCode==「backspaceキー値」){ return false; } return true; } とすればいかがでしょう?

lovelypooh
質問者

お礼

ソースまで付けていただいてありがとうございます。 キーコード対応表を見ながら、deleteキー値・backspaceキー値にそれぞれ46,-8を入れて実行してみましたが エラーが出てしまいました(涙)。 けれど、Antsさんのソースにヒントを得て function KeysPress() {   var k = window.event.keyCode;   if ( k < 48 || k > 57 )    {     window.event.keyCode = 0;    } } と、やってみると動きました。 キーコードで操作する、というやり方を初めて知りました。すごい便利ですねぇ。 教えて頂いてありがとうございます。 これからもよろしくお願いします(ペコリ)。

noname#9414
noname#9414
回答No.1

珍しく1日くらい経っても回答が付いていないようなので・・・ よくCなどのプログラムでやる方法としてはDELETEやBACKSPACEのASCIIコードをその場合は数値と同じようにtrueを返すという風に追加してやることだと思います。 JavaScriptはあまり書かないので、書き方は分かりませんが、試してみる価値はあると思いますよ。 ではでは☆

lovelypooh
質問者

お礼

お礼が遅くなってすみません。 Cは遠い昔に書いたっきりな上、ASCIIコードが何であるかがわからなかったので(・・・恥) すぐにピンとはきませんでしたが Antsさんのソースを見て意味がわかりました。 こういう方法があるんだなぁ、と感心させられました。 専門外っぽいのに回答して頂いてありがとうございました(ペコリ)。

関連するQ&A