• ベストアンサー

半角数字のみ指定したいのですが、2つ以上のテキストボックスに適用されません。。。

こんにちは。お世話様になります。 電話番号の欄など、半角数字のみ入力できるようにしたいのですが、1つのテキストボックスなら指定できるのですが、2つ以上が指定できません。  下記のようなタグを使っております。 <script language="JavaScript" type="text/JavaScript"> <!-- function check(){ str = document.F1.color1.value; data = str.match(/[^0-9\-]/g); if (data) alert("半角数字以外の "+data+" が含まれています"); } // --> <!-- function check(){ str = document.F1.color2.value; data = str.match(/[^0-9\-]/g); if (data) alert("半角数字以外の "+data+" が含まれています"); } // --> <form name="F1"> <input type="text" onKeyDown="check()" size="5" name="color1"> <input type="text" onKeyDown="check()" size="5" name="color2"> </form> この場合、「color2」の方は有効なのですが、「color1」の方には、適用されず、「color2」の設定をを消すと「color1」が有効になります。  どちらも有効にする方法をご教示頂けないでしょうか。 windows XP IE6.0を使っております。 お忙しい中恐れ入りますが、宜しくお願い致します。

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

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.3

alert出すこともないんじゃないかな? <script> function check(obj){ var v=obj.value; if(v.match(/[^0-9]/g)){ obj.value=v.replace(/[^0-9]/g,''); } } </script> <form> <input type="text" onKeyup="check(this)" size="5" name="color1"> <input type="text" onKeyup="check(this)" size="5" name="color2"> </form>

satoshi81
質問者

お礼

yambejpさん、できました!! 本当に助かりました!! 直にお会いしてお礼を言いたいくらいです!!  勉強になりました。ご教示くださり、本当にありがとうございます!!!

その他の回答 (2)

  • pick52
  • ベストアンサー率35% (166/466)
回答No.2

同じ名前の関数を使用したらどちらが実行されるかは不定です。 通常は後に書いたものが実行されると思います。 以下のように修正してください。 function check(){ var form = document.getElementsByName('F1')[0]; for(var i = 0; i < length; i++) { var str = form[i].value; var data = str.match(/[^0-9\-]/g); if(data) { alert('半角数字以外の ' + data + ' が含まれています'); return false; } } } また、JavaScriptは無効にできるので、JSだけのチェックで済まさずに ちゃんとサーバ側でもチェックしてください。

satoshi81
質問者

お礼

pick52さん、 問題解決いたしました。 アドバイスくださり、本当にありがとうございました!

satoshi81
質問者

補足

pick52さん、アドバイスありがとうございます。  こちらをコピペさせていただいたのですが、color1、color2ともにアラートのダイアログボックスがなぜか出なくなってしまいました。。。  サーバーにupしてチェックをしたのですが、うまくいきません。。。 なぞです。。。

  • nda23
  • ベストアンサー率54% (777/1415)
回答No.1

メソッドが重複しているからです。 パラメータ形式にしたら如何でしょう。 function check(box) { ★一箇所だけにする str = box.value; data = str.match(/[^0-9\-]/g); if (data) alert("半角数字以外の "+data+" が含まれています"); } <input type="text" onKeyDown="check(this)" size="5" name="color1"> <input type="text" onKeyDown="check(this)" size="5" name="color2">

satoshi81
質問者

お礼

nda23さん、 問題解決いたしました。 アドバイスくださり、本当にありがとうございました!

satoshi81
質問者

補足

早速のアドバイスありがとうございます。 nda23さんのアドバイスどおりやってみたのですが、 今度は、color1、color2のどちらも、半角数字以外を入力してもアラートのダイアログボックスがでなくなってしまいました。。。  大変お忙しい中申し訳ございません。原因は何が考えられるでしょうか。ご返信お待ちしております。

関連するQ&A

  • テキストボックス未記入時のアラート表示 JS

    【出来ていること】 下記のように電話番号の未入をチェックしアラートを出すことができました。 <script> function check3() { tel3check = document.form3.tel3.value; data13 = tel3check; if(!data13) { alert("電話番号が未入力です13"); return; } else { document.form3.submit(); } } </script> <form method="POST" action="in.php" name = "form3"> <input type="text" name="tel3" value="" /> <input type="button" value="確認" name="sub1" onclick="check3();"> </form> 【躓いていること】 電話番号の未入だけでなく、FAXの未入もチェックしそれぞれでアラートを出そうとしましたが動きません。ご指導いただけますでしょうか? よろしくお願いいたします。 <script> function check3() { tel3check = document.form3.tel3.value; fax3check = document.form3.fax3.value; data13 = tel3check; data133 = fax3check; if(!data13) { alert("電話番号が未入力です13"); return; } elseif(!data133) { alert("FAX番号が未入力です133"); return; } else { document.form3.submit(); } } </script> <form method="POST" action="in.php" name = "form3"> <input type="text" name="tel3" value="" /> <input type="text" name="fax3" value="" /> <input type="button" value="確認" name="sub1" onclick="check3();"> </form>

  • フォームのname値を配列にしてJavaScriptでフォームのチェックをする方法

    JavaScriptでフォームの半角数字のチェックをしたいのですが、 form内容をCGI(PHP)に渡すためname値を配列にしないといけないのですが、 以下のスクリプトだとエラーが出てしまいます。 *実際はif(isNaN~)と<input~>をループで書き出しており、行数が不特定なので それぞれ別のname値を使うことができない状態です。 <script language="JavaScript"> function check() { if(isNaN(document.form1.hoge[0].value)){ alert("値は半角数字で入力してください。"); return(false); } if(isNaN(document.form1.hoge[1].value)){ alert("値は半角数字で入力してください。"); return(false); } return(true); } </script> <form method="post" action="xxx.cgi" onSubmit="return check()" name="form1"> <input type="text" name="hoge[0]"> <input type="text" name="hoge[1]"> </form> 特にCGIに渡す必要がなければ <input type="text" name="hoge"> <input type="text" name="hoge"> としてやればチェックができるのですが、どうしても次の 処理があるためname値を配列にする必要があります。 解決方法がわかる方がおられましたらご教授ください。 以上よろしくお願いいたします。

  • 現在のカーソル行を知りたい。

    'KeyDown'の下記サンプルコードでfunction msgにきたときに 何番目のテキストボックスでKYyDownされたか知りたいのですが、 関数があればお教え下さい。 <html> <head> <script type="text/Javascript"> <!-- function msg(str) { alert("check"); } //--> </script> </head> <body onKeyDown="msg('KeyDown')"> key<br> <form name="myForm" method="POST" target="_self"> <input type="text" name="text1><BR> <input type="text" name="text1"><BR> <input type="text" name="text1"><br> <input type="submit" name="button1" value="button"> </form> </body> </html>

  • Enterで指定のテキストボックスにフォーカスを・・・

    Enterを押すと指定のテキストボックスにフォーカスを移動させたいのですがやり方がわかりません・・・。 例えば以下の様なフォームで TB1→TB2→TB3→TB5→TB6 という具合に移動させたいです。 どうか皆さんのお知恵をお貸しください。 <form name = "textbox"> <input type = "text" name="TB0" onFocus="this.blur()"> <input type = "text" name="TB1"> <input type = "text" name="TB2"> <input type = "text" name="TB3"><br> <input type = "text" name="TB4"onFocus="this.blur()"> <input type = "text" name="TB5"> <input type = "text" name="TB6"> </form>

  • テキストボックスに入力されたらラジオボタンにチェック

    いつもお世話になっております。 タイトル通りなのですが テキストボックスに入力された時に、チェックボックスや ラジオボタンににチェックが付くようなJavaScriptを思考しています。 test.php ---------------------------------------- <form name="form1" method="post" action="test.php"> <input type="checkbox" name="235[]" value="1"> <input name="394" type="text" style="ime-mode: active" onchange="text_check('235')" value="" /> </form> script.js ---------------------------------------- function text_check(nm) {  obj = document.form1;  alert(obj.elements[nm + '[]'].length); // アラートで「undefined」と出てしまう。  for( i=0; i<obj.elements[nm + '[]'].length; i++){   obj.nm[i].checked = true;  } } フォームのラジオボタン、テキストボックスのname属性は 数字じゃない場合は、問題なさそうなのですが 数字の場合だとうまく動作してくれません。 name属性を変更することは考えていません。 ご教示よろしくお願いいたします。

  • javascriptでのテキストボックス制御

    javascriptを使用して 特定のテキストボックスを動的に enable←→disableを切り替えたく、様々なホームページを見ながら試行錯誤して、下記ソースまで辿りつきましたが、うまく動かなくて困っています。 どうかご教示ください。よろしくお願いします。 現状:チェックをいれると enable→disableになるが、外すと戻らない。 目標:同上+チェック外すと最初disableも含めて、enableになる。 <html> <head> <script language="javascript" type="text/javascript"> function autochk(f){ for(var i=0;i<f.form.length;i++){ if (f.form.elements[i].className=="ko"){ if (f.form.elements[i].checked){ //checked チェックが入っていたら f.form.elements[i].disabled = false; // 入力不可, 無効化 }else{ f.form.elements[i].disabled = true; // 入力可能,有効化 } } } } </script> <style type="text/css"> <!-- ul li { list-style: none; } label { margin-right: 10px; width:200px; float: left; } --> </style> </head> <body> <form> <ul> <li><input type="checkbox" name="oya" value="1" onclick="autochk(this);">チェック</li> <li><label>無効→チェック→無効→有効</label><input type="text" name="ko1" class="ko" value="1" disabled></li> <li><label>有効→チェック→無効→有効</label><input type="text" name="ko2" class="ko" value="1"></li> <li><label>有効→チェック→そのまま</label><input type="text" name="other1" value="1"></li> <li><label>有効→チェック→無効→有効</label><input type="text" name="ko3" class="ko" value="1"></li> <li><label>有効→チェック→無効→有効</label><input type="text" name="ko4" class="ko" value="1"></li> <li><label>有効→チェック→そのまま</label><input type="text" name="other2" value="1"></li> </form> </ul> </body> </html>

  • テキストボックスが何番目かを検出したい

    <FORM> <INPUT type="text" name="S1"> <INPUT type="text" name="S2"> <INPUT type="text" name="S3"> <INPUT type="text" name="S4"> <INPUT type="text" name="S5"> </FORM> 上記ソースでオンフォーカスのテキストボックスが何番目かを検出したいのですがJavaScriptで可能でしょうか?

  • チェックボックスとテキストボックスを連動させたい

    JavaScriptでチェックボックスにチェックが入るとテキストボックス自動で数字の1が入る仕組みを作っています。 以下のソースまではかけたのですが 列はそれほどないのですがと行数が多数存在します。 ファンクションが一つで済む方法はありませんでしょうか。 またデータを配列で送信したいのですが配列ですと動きません。 是非教えて頂けると幸いです。 <SCRIPT LANGUAGE="JavaScript"> function check1(radio) { //チェックボックスにチェックが入った場合 if(radio.checked) { form = radio.form; form.data1[1].value = radio.value; form.data1[2].value = radio.value; form.data1[3].value = radio.value; form.data1[4].value = radio.value; }else{ //チェックが外された場合 form = radio.form; form.data1[1].value = ""; form.data1[2].value = ""; form.data1[3].value = ""; form.data1[4].value = ""; } } function check2(radio) { //チェックボックスにチェックが入った場合 if(radio.checked) { form = radio.form; form.val5.value = radio.value; form.val6.value = radio.value; form.val7.value = radio.value; form.val8.value = radio.value; }else{ //チェックが外された場合 form = radio.form; form.val5.value = ""; form.val6.value = ""; form.val7.value = ""; form.val8.value = ""; } } </SCRIPT> <FORM METHOD="POST"> <INPUT TYPE="checkbox" NAME="r" VALUE="1" onclick="check1(this)">チェック1<BR> <INPUT NAME="data1[1]" SIZE="1"> <INPUT NAME="data1[2]" SIZE="1"> <INPUT NAME="data1[3]" SIZE="1"> <INPUT NAME="data1[4]" SIZE="1"><br> <INPUT TYPE="checkbox" NAME="r" VALUE="1" onclick="check2(this)">チェック2<BR> <INPUT NAME="val5" SIZE="1"> <INPUT NAME="val6" SIZE="1"> <INPUT NAME="val7" SIZE="1"> <INPUT NAME="val8" SIZE="1"> </FORM>

  • 半角英数字の判別

    お世話になります テキストフィールドにおいて半角英数字のチェックをしたいのですが・・・ 例えば『012ab』のような場合、 <script Language="JavaScript"> <!-- function checkText() { txt = document.myFORM.moto.value; if (txt.match(/[^a-z|^A-Z]/g)) alert("アルファベット以外が含まれてます"); } //--> </script> <form name="myFORM"> <input type="text" name="moto"> <input type="button" value="調べる" onClick="checkText()"> </form> では数字が入力されてるとalertされます function checkNum() { txt = document.myFORM.moto.value; for (i=0; i<txt.length; i++) { c = txt.charAt(i); if ("0123456789".indexOf(c,0) < 0) { alert("数値以外が含まれてます"); return; } } } //--> </script> <form name="myFORM"> <input type="text" name="moto"> <input type="button" value="調べる" onClick="checkNum()"> </form> ではアルファベットがあるとalertされてしまいます この2つをどのように組み合わせれば半角英数字以外であればalertされるようになるのでしょうか?

  • テキストボックスの背景色について

    <html> <body> <form name="form1"> <input type="text" value="よろしく" name="text1"> <script language="javascript"> document.form1.text1.style.background-color = "green"; </script> </form> </body> </html> これはテキストボックスの背景色をグリーンにするプログラムなんですがうまくいきません。どこが間違っているのか指摘してください。