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

******************************************************************
<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キーが使えないのです。

どうしたら入力制限をかけつつ、両キーを有効にできるのでしょうか。

このQ&Aに関連する最新のQ&A

とは ASCII」に関するQ&A: ASCII端末とは?

A 回答 (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);"

コンナンデマシタケド~
    • good
    • 0
この回答へのお礼

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

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

丁寧かつ親切な回答をありがとうございました。
これからもよろしくお願いします(ペコリ)。

お礼日時:2001/10/02 10:18

function checkNum()


{
c=String.fromCharCode(event.keyCode);
if("0123456789".indexOf(c,0)<0 && event.keyCode==「deleteキー値」 && event.keyCode==「backspaceキー値」){
return false;
}
return true;
}
とすればいかがでしょう?
    • good
    • 0
この回答へのお礼

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

キーコード対応表を見ながら、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

珍しく1日くらい経っても回答が付いていないようなので・・・



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

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

ではでは☆
    • good
    • 0
この回答へのお礼

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

専門外っぽいのに回答して頂いてありがとうございました(ペコリ)。

お礼日時:2001/10/02 09:36

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q 内に書くことはできません」

元アルバイト先に頼まれてサイトを作り運営しているのですが、わからないことがあるので教えて下さい。

サイトはXHTML1.0 Transitional で作っており、ここに、http://fmono.sub.jp/ の「w3Analyzer」を組み込みアクセス解析をしています。サイト自体もこのアクセス解析も正常に動作しています。
ただ、このサイトをhttp://openlab.ring.gr.jp/k16/htmllint/htmllint.htmlで構文チェックすると、アクセス解析のタグにエラー「<img>を~行目の<script>~</script>内に書くことはできません。」が表示されてしまいます。
エラーが表示されるタグは下記のようなものです。

<script type="text/javascript">
document.write('<img src="http://~/w3a/writelog.php?ref='+document.referrer+'" width="1" height="1" />');
</script> >

アクセスログは普通に取得できているので問題ないのですが、もし上記エラーを回避する方法があればご教授下さい。よろしくお願いします。

元アルバイト先に頼まれてサイトを作り運営しているのですが、わからないことがあるので教えて下さい。

サイトはXHTML1.0 Transitional で作っており、ここに、http://fmono.sub.jp/ の「w3Analyzer」を組み込みアクセス解析をしています。サイト自体もこのアクセス解析も正常に動作しています。
ただ、このサイトをhttp://openlab.ring.gr.jp/k16/htmllint/htmllint.htmlで構文チェックすると、アクセス解析のタグにエラー「<img>を~行目の<script>~</script>内に書くことはできません。」が表示されてし...続きを読む

Aベストアンサー

XHTML には「ホンモノの XHTML」と「ニセモノの XHTML」があります。「ホンモノの XHTML」とは application/xml または application/xhtml+xml として識別されるもの、「ニセモノの XHTML」は text/html で識別されるものです。

※実際にはどちらも本物です。ここでは「HTML 互換として処理される XHTML」を「ニセモノ」、「XML として解析される XHTML」を「ホンモノ」と、カタカナ&カッコ付きで書いています。

「ホンモノの XHTML」として見れば、質問文のソースは妥当性違反です。なぜなら、img 要素のタグがエスケープされていないため、これがスクリプトの一部ではなく文書構成要素だと判断されるからです。XHTML 1.0 のスキーマは、script 要素内に img 要素が出現することを許していません。もちろん、スクリプトとしても正しく動作しません。

従って、XML のルールに従ってエスケープする必要があります。特に「<」と「&」は必ずエスケープしなければなりません。

document.write('&lt;img .... />');

ですが面倒なことに、「ニセモノの XHTML」ではこれが動作しなくなります。「ニセモノの XHTML」は、HTML との互換性のために script 要素内の「<」「&」をうまく扱ってくれるのですが、それが仇となり、上記では「&lt;」が「<」に戻りません。

ならば、コメント区間にするのはどうでしょう。XML でもコメント内なら「<」「&」が現れても大丈夫です(ただし「--」だけは駄目です)。

<script type="text/javascript"><!--
document.write('<img .... />');
//--></script>

「ニセモノの XHTML」ならこれでも構いません。しかし、「ホンモノの XHTML」では、コメントは本当に破棄されてしまい、上記では動作すらしなくなります。

そこで、XML/HTML のルールを使わず、JavaScript のルールでエスケープすることを考えます。

document.write('\u003Cimg .... />');

これなら大丈夫でしょう。XML/HTML に限らず、言語が混在する際は必ず適切なエスケープを施す必要があります。エスケープを避けたければ外部スクリプトにして下さい。


なお、ここには別の問題があります。そもそも「ホンモノの XHTML」では、document.write を使用できません。これは HTML 互換の機能だからです(HTML5 に明記されています)。

XHTML を採用するのであれば、それが「ホンモノ」でも「ニセモノ」でも大丈夫なよう、document.write に頼らないコードを作成して下さい。あるいは try...catch で括るなどして、「ニセモノ」として処理されたときのみコードが動作するよう工夫して下さい。あるいはいっそ、XHTML を止めるのも 1 つの選択でしょう。

XHTML には「ホンモノの XHTML」と「ニセモノの XHTML」があります。「ホンモノの XHTML」とは application/xml または application/xhtml+xml として識別されるもの、「ニセモノの XHTML」は text/html で識別されるものです。

※実際にはどちらも本物です。ここでは「HTML 互換として処理される XHTML」を「ニセモノ」、「XML として解析される XHTML」を「ホンモノ」と、カタカナ&カッコ付きで書いています。

「ホンモノの XHTML」として見れば、質問文のソースは妥当性違反です。なぜなら、img 要素のタ...続きを読む

Qとどっちに入れる?どっちも入れる??

よくJavaScriptで、<head></head>の間に書きこむのと、<body></body>の間に書くのがありますが、どう違うのでしょうか。<head></head>に書くだけのが大半で、たまに両方書くのがあるのですが、毎回疑問に思ってました。お願いです。教えてくださいまし。

Aベストアンサー

どのような場合に…というのがはっきりしないのであいまいな回答になっちゃいますが、どっちの場合もあります。

functionだとheadの中に書いてますが、動的に文書の内容を書き出したりするような、最終的な命令部分はbodyの中に書いてますね。headの中で定義した関数をbodyの中で呼び出したりしますから。

Qで画像を選択

HTMLのページ内で<input type="file">で画像を選択して
その画像を現在のHTMLページに表示する
という質問のベストアンサー
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1151913361

にしたがって、使ってみましたが、表示されません。
使い方のどこがまちがっているか教えてください。

また、そこにある動作サンプルが見えません。
動作サンプルを見る方法もわかりましたら、お願いします。

--------------------------
<html lang="ja">
<head>
<title></title>
<script type="text/javascript">

function dispImg() {
var myFile = document.getElementById('ans5');
var src = null;
if (window.File) {
src = myFile.files[0].getAsDataURL();
} else {
src = myFile.value;
}
document.getElementById('DISP').src = src;
}
</script>
</head>
<body>

<form name ="a">

写真を指定してください:
<input type="file" name="ans5" Onchange="dispImg();"><br>
<img src="" alt="" id="DISP">
</form>

</body>
</html>

HTMLのページ内で<input type="file">で画像を選択して
その画像を現在のHTMLページに表示する
という質問のベストアンサー
http://detail.chiebukuro.yahoo.co.jp/qa/question_detail/q1151913361

にしたがって、使ってみましたが、表示されません。
使い方のどこがまちがっているか教えてください。

また、そこにある動作サンプルが見えません。
動作サンプルを見る方法もわかりましたら、お願いします。

--------------------------
<html lang="ja">
<head>
<title></title>
<script type="text/javascript...続きを読む

Aベストアンサー

非標準のメソッドが使われています。
Fileを扱うためには基本FileReaderを使わなければなりません。
それよりもっといいのが、BlobURL化することです。

写真を指定してください:
<form>
<input type=file onChange="this.form.disp.src=window.URL.createObjectURL(this.files[0])">
<br><img name=disp>
</form>

Q内のコードの抽出方法

Ajaxで読み込んだHTML文書内にあるスクリプトのコードだけを
抽出したいのですが、正規表現を教えてください。
自分で考えてみたものは、以下の方法です。
これが最良なのかわかりません。
「スクリプトは複数箇所に存在しない」という条件で構いません。
宜しくお願いします。

var HTML = 'ここにHTML';
HTML.match(/.*<script.*>([\w\W]*)<\/script>.*/);
scr = RegExp.$1;
eval(scr);

Aベストアンサー

>改行が
ああそうか・・・ mフラグ付けると どう?
ダメなら [\s\S]* とか使う事になると思うけど・・・


人気Q&Aランキング

おすすめ情報