OKWAVEのAI「あい」が美容・健康の悩みに最適な回答をご提案!
-PR-
解決
済み

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

  • 暇なときにでも
  • 質問No.143226
  • 閲覧数163
  • ありがとう数6
  • 気になる数0
  • 回答数3
  • コメント数0

お礼率 76% (55/72)

いつもお世話になっています。

******************************************************************
<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
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3
レベル7

ベストアンサー率 50% (7/14)

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

お礼率 76% (55/72)

切って貼って実行するだけの、ありがたいソースをありがとうございます。
46と8はdelとbackspaceのキーコード値というのはわかりましたが
96~105は何を指しているのでしょう?
私の手元にあるOnkeydownキーコード表は「'」と「a~i」を指しているのです。

おっと、それはまた別の質問になってしまうので、まず調べてみることにします。

丁寧かつ親切な回答をありがとうございました。
これからもよろしくお願いします(ペコリ)。
投稿日時 - 2001-10-02 10:18:55
-PR-
-PR-

その他の回答 (全2件)

  • 回答No.1

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

よくCなどのプログラムでやる方法としてはDELETEやBACKSPACEのASCIIコードをその場合は数値と同じようにtrueを返すという風に追加してやることだと思います。

JavaScriptはあまり書かないので、書き方は分かりませんが、試してみる価値はあると思いますよ。

ではでは☆
お礼コメント
lovelypooh

お礼率 76% (55/72)

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

専門外っぽいのに回答して頂いてありがとうございました(ペコリ)。
投稿日時 - 2001-10-02 09:36:55


  • 回答No.2
レベル7

ベストアンサー率 50% (1/2)

function checkNum() { c=String.fromCharCode(event.keyCode); if("0123456789".indexOf(c,0)<0 && event.keyCode==「deleteキー値」 && event.keyCode==「backspaceキー値」){ retu ...続きを読む
function checkNum()
{
c=String.fromCharCode(event.keyCode);
if("0123456789".indexOf(c,0)<0 && event.keyCode==「deleteキー値」 && event.keyCode==「backspaceキー値」){
return false;
}
return true;
}
とすればいかがでしょう?
お礼コメント
lovelypooh

お礼率 76% (55/72)

ソースまで付けていただいてありがとうございます。

キーコード対応表を見ながら、deleteキー値・backspaceキー値にそれぞれ46,-8を入れて実行してみましたが
エラーが出てしまいました(涙)。

けれど、Antsさんのソースにヒントを得て
function KeysPress()
{
  var k = window.event.keyCode;
  if ( k < 48 || k > 57 )
   {
    window.event.keyCode = 0;
   }
}

と、やってみると動きました。

キーコードで操作する、というやり方を初めて知りました。すごい便利ですねぇ。
教えて頂いてありがとうございます。

これからもよろしくお願いします(ペコリ)。
投稿日時 - 2001-10-02 09:50:52
このQ&Aで解決しましたか?
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


いま みんなが気になるQ&A

-PR-

ピックアップ

-PR-
ページ先頭へ