• ベストアンサー

テキストフィールドの入力規則(数値チェック)

http://oshiete1.goo.ne.jp/kotaeru.php3?q=143226 を参考にさせていただいて、以下のコードで実行してみました。 =============================== <BODY> <FORM NAME="f" ACTION="UPDATE" METHOD="POST" TARGET="FRAME_D" onSubmit="return conf();"> <INPUT TYPE="TEXT" NAME="FM_KINGAKU" onKeyDown="return keyCheck(event.keyCode);" > <SCRIPT TYPE="text/javascript" SRC="./JS.SOURCE"></SCRIPT> <SCRIPT TYPE="text/javascript"> <!-- function keyCheck(keyCodes){ if((keyCodes >= 49 && keyCodes <= 57) || (keyCodes >= 96 && keyCodes <= 105) || keyCodes == 46 || keyCodes == 8) return true; else return false; } function conf(WK_LINEINDEX){ /* 省略 */ } // --> </SCRIPT> </FORM> </BODY> =============================== しかし、数値以外のキーを押しても何事もなかったかのように 入力できてしまうのです。 前の質問者のlovelypoohさんは解決されたみたいなんですが、 いったい何が違うのでしょう? onSubmit="return conf();" ってのと onKeyDown="return keyCheck(event.keyCode);" ってのが 同じFORMタグの中にある、とか関係あるのでしょうか?

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

  • ベストアンサー
  • A__
  • ベストアンサー率47% (22/46)
回答No.2

入力をなかったことにするのは event.returnValue=false です。 <INPUT onKeyPress=keyCheck()> <SCRIPT TYPE="text/javascript"> function keyCheck(){ if(event.keyCode>57 || event.keyCode<48) event.returnValue=false; } </SCRIPT>

pinky23
質問者

お礼

できましたできました!! これでキーコードを設定すれば他にも応用できますね。 ありがとうございました。

その他の回答 (1)

  • tamaCo
  • ベストアンサー率66% (47/71)
回答No.1

こちらの関数(keyCheck)はキーを押されたときにコールするんですよね。 onSubmit時はreturn値により、「true(送信する)/false(送信中止する)」 という目に見える動きがありますが、onKeyDown時に単にreturn値を戻しても 特に何も起こらないと思うんですが。。。押したキーがなかった事になる訳じゃ ありませんので。(^-^;) 上記を踏まえるとキーを押されたときに1字1字チェックするよりは、onSubmit時に 入力された全ての文字を一度にチェックする方が楽かもしれません。 #インデントのため全角スペース入れてます。 function conf() {  with(document.f)  {   if(isNaN(FM_KINGAKU.value))   {    alert("数値以外の値は入力できません");    return false;   }    :  //その他の処理  } } isNaNが嫌ならcharAtなんかで1字ずつ文字を抜き出してチェックするというのもあります。 お役に立てるといいのですが。。。

参考URL:
http://www.openspc2.org/JavaScript/ref/index.html
pinky23
質問者

補足

回答ありがとうございます! 参考にさせていただいて、うまくいきました。 ところで「入力をなかったことにする」ということはできないってことですか? では、http://oshiete1.goo.ne.jp/kotaeru.php3?q=143226の 回答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);" ============ は何をするためのものだったのでしょう・・・??

関連するQ&A

  • returnの戻り値について

    以前の質問を見ていてひとつわからないことがあるのです。 内容をそのままコピーしたのですが、この場合、キーが押されたときに関数を呼び出し、 returnで戻り値が「true/false」とありますが、戻ってきたときはどこにtrue/falseが入っているのですか? <BODY> <FORM NAME="f" ACTION="UPDATE" METHOD="POST" TARGET="FRAME_D" onSubmit="return conf();"> <INPUT TYPE="TEXT" NAME="FM_KINGAKU" onKeyDown="return keyCheck(event.keyCode);" > <SCRIPT TYPE="text/javascript" SRC="./JS.SOURCE"></SCRIPT> <SCRIPT TYPE="text/javascript"> <!-- function keyCheck(keyCodes){ if((keyCodes >= 49 && keyCodes <= 57) || (keyCodes >= 96 && keyCodes <= 105) || keyCodes == 46 || keyCodes == 8) return true; else return false; } // --> </SCRIPT> </FORM> </BODY>

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

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

  • onKeyDownで数値チェック

    数値の入力チェックを行っています。 入力時にタブで飛んだ時にチェックをかけるので関数として設定しておき、フォームではonKeyDownで呼び出すことが前提です。(onBlueは不可) この時下記のプログラムでは、アルファベットの上に並んでいる数値での入力チェックはうまくいくのですが、以下の(1)~(3)で制限があるようで、思ったように動きません。 どなたかいいお知恵がある方は是非お願いいたします。 ********************** アルファベットの上に並んでいる数値のみ有効としているが、 (1)テンキーの数字キー (2)タブキー (3)バックスペースキー も有効としたい。 下記の例にこだわる必要はないが、 onKeyDownで呼び出すことが条件。 <script Language="JavaScript"><!-- function checkNum() { c = String.fromCharCode(event.keyCode); if ("0123456789".indexOf(c,0) < 0) alert("数値以外入力できません"); } // --></script> </head> <body> <form> <input type="text" onKeyDown="checkNum()"> </form> </body> </html>

  • フォーム内のテキストフィールドにアドレスを入力後、Enterキーを入力して移動したい

    フォーム内のテキストフィールドにアドレスを入力後、Enterキーを入力して 移動するにはどうすればよいのでしょうか? 以下のようなコードを作成したのですがうまくいきませんでした。 <html> <head> <script type="text/javascript"> function jumpURL() { url = document.f.t.value; location.href = url; } </script> </head> <body> <form name="f" onSubmit="jumpURL()"> <input type="text" name="t" id="t"> </form> </body> </html> ご存知の方がおられましたらご回答をよろしくお願いします。

  • checkbox の入力チェックのやり方について

    お世話になります。 フォームにて、 javascriptで、入力チェックをおこないたいと思っています。 チェックボックスについては、どれか選択が一つでもなければ、アラートで、文字を出したいと思いますが、うまくできません。 チェックボックスの入力確認の方法を教えてください。 よろしくお願いいたします。 現在作りかけのソースは、下記の通りです。 <html> <head><title>-</title></head> <body> <form method="post" action="" onsubmit="return form_Validator(this)"> <input type="text" name="a1" size="15" maxlength="12"> <BR> <input type="checkbox" name="a1001" value="1"> <input type="checkbox" name="a1002" value="1"> <input type="submit" value="登録" name="submit"> </form> <script Language="JavaScript"> <!-- function form_Validator(doc) { if ( doc.a1.value == "" ) { alert( "BAD" ); return false; } /* a1001かa1002のチェックボックスのチェックがなければアラート----*/ return (true); } //--> </script> </body> </html>

  • JavaScript動作仕様の変更!?

    以前は動作していたものが最近のIEパッチ(?)で動作しなくなった気がします。もし解決方法があれば教えて下さい! ------------------------------------- <HTML> <HEAD> <TITLE></TITLE> <SCRIPT type="text/javascript"> <!-- function test() { document.form.submit(); } function test2() { alert( "!!" ); return true; } --> </SCRIPT> </HEAD> <BODY> <FORM name="form" onSubmit="return test2()"> <INPUT type="button" value="おす" onClick="test()"> </FORM> </BODY> </HTML> ------------------------------------- 以前だと、JavaScriptでのsubmit()コマンドで、きちんとonSubmitイベントも動作していたハズなんですが、ここ数日でボタン部分を <INPUT type="submit" value="おす"> としないとonSubmitイベントが動作しなくなった様に思えます。ここ数日でWindowsUpdateした端末数台でチェックしましたが同様でした。

  • JAVASCRIPTでINPUT

    HTMLとJAVASCRIPTとJSPを使ってシステム構築をしております。 --------------- <html> <head> <SCRIPT Language="JavaScript"> <!-- function send() { alert("<input type=text name=name2>"); } // --> </SCRIPT> </head> <body> <form onSubmit="send(); return false;"> <input type=text name=name1> <input type=submit> </form> </body> </html> --------------- 上記のコードでやりたいことは、 submitボタンが押されたときにJAVASCRIPTを呼び出し JAVASCRIPT上で文字を入力し次画面へ送信するような機能を作りたいと思っているのですが、本を見てもなかなか載っていません。 もしかしたらJAVASCRIPTだけではできないかもしれません。 JSPまたはPHPで出来る機能でも良いので教えてください。

  • テキストボックスをEnterキーで移動する際のビープ音

    あるテキストボックスでEnterキーを押すと、次のテキストボックスに移動する スクリプトを組んだのですが、動作はしますが必ず「ブー」というビープ音が 鳴ってしまいます。 たぶん、改行できないテキストボックス内でEnterキーを押すことで、「ダメだよー」 っという警告だと思うのですが、どうにかして消すことはできないのでしょうか? どのような些細なことでも構いませんので、ご教授願います! ~Java Script~ function Change(){ if(event.keyCode==13) document.form.name2.focus(); } ~HTML~ <FORM NAME="form"> <INPUT TYPE="text" NAME="name1" onKeyDown="Change()"> <INPUT TYPE="text" NAME="name2"> </FORM>

  • 通し番号の変数を一括チェックするには?

    JavaScriptでフォームの入力値のチェックを行う プログラムを書いています。 OnSubmitで処理を行っているのですが、チェック対象の テキストボックスが大量に存在しているので、 なんとか効率良く処理できないでしょうか? if( !NumCheck(form.text1.value) || !NumCheck(form.text2.value) || !NumCheck(form.text3.value) || /* ・・・ */ !NumCheck(form.text100.value) ) これをforか何かで回せるとベストなのですが…。 PHPのように文字列を変数名に変換する方法など、 なにか良いアプローチがありましたらご教示願います。 問題の部分抽出したHTMLを下に載せておきます。 そのままでは動きませんが、雰囲気が伝わればと。 インデントがなくてすみません。 よろしくお願いいたします。 <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <script type="text/javascript"> <!-- function submitCheck(form){ if( !NumCheck(form.text1.value) || !NumCheck(form.text2.value) || !NumCheck(form.text3.value) || /* ・・・ */ !NumCheck(form.text100.value) ) { alert('入力エラー'); return false; } return true; } function NumCheck(value){ var tmp = value.match(/[0-9]+/g); if(tmp != value) return false; return true; } //--> </script> </head> <body> <form name="form1" action="test.cgi" target=_self method="post" onSubmit="return submitCheck(this);"> <input type="text" name=text1> <input type="text" name=text2> <input type="text" name=text3> /* ・・・ */ <input type="text" name=text100> </form> </body> </html>

  • テキストフィールドに半角数値以外入力させない方法…。

    お世話になります! 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が有効な状態での実行です。

専門家に質問してみよう