• ベストアンサー

アラートチェック_javascript

javascript初心者です。 15個のテキストボックスに0or1のみ入力されるようにチェックを行いたいです。 ★のところでランタイムエラーが出ます。 <SCRIPT LANGUAGE="javascript"> <!-- var isFristTime = false; function fn_submit(obj) { for(var a=1; a<16; a++){ var flag = "fl1_" + a; ★ if(obj.flag.value.match(/^[0-1\s]$/)){ alert("フラグは0か1のみです。"); break; } } } // --> </script> </head> <body> <form name="form0" action="alert_test.asp" method="POST" OnSubmit="return fn_submit(this);"> <table border="1" bordercolor="#000000" rules="none"> <tr> <% for i=1 to 15 flag = "fl1_"&i %> <td>フラグ<%= i%></td> <td width="50" align="left"> <input type="text" name=<% =flag %> style="IME-MODE: disabled" size="2" maxlength="1" value="0"></td> <tr> <% next %> </tr> </table> <input type="submit" value="チェック"> </form>

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

  • ベストアンサー
  • redfox63
  • ベストアンサー率71% (1325/1856)
回答No.3

本来の修正は #1、#2氏の回答を ・・・ 修正を最小限にするなら if(obj.flag.value.match(/^[0-1\s]$/)){ を if(obj[flag].value.match(/^[0-1\s]$/)){ とします ただこのままだと 入力されたのが 0・1の場合に アラートが表示されます なぜかはif文がどのような動作を期待しているかを考えましょう

Hirathi-
質問者

お礼

コピペでほとんど作成しているので、最小限の修正で思っていた反応が出たので、良かったです。 ありがとうございます。 ご指摘の通り、そのままでは0と1の場合にもアラートが出てしまいました。 if(!obj[flag].value.match(/^[0-1\s]$/)){ ↑に変更してうまくいきました。

その他の回答 (2)

  • t_netbug
  • ベストアンサー率34% (15/44)
回答No.2

↓の補足です。 var textbox = document.getElementsByTagName('input'); inputタグで任意のtypeを取り出したい時は textbox[index番号].typeで取得出来ます。 例えばtextの時は if(textbox[index番号].type=="text"){ //処理 }

  • t_netbug
  • ベストアンサー率34% (15/44)
回答No.1

http://www.tohoho-web.com/js/regexp.htm エラーが出るのはこの書き方に合っていないからだと思うのですが…。 ちなみに同様の動作をさせるのであれば、自分ならこう書きます。 <?xml version="1.0" encoding="Shift_JIS" ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html lang="ja" xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS" /> <meta http-equiv="content-script-type" content="text/javascript" /> <meta http-equiv="content-style-type" content="text/css" /> <title>sample</title> <script type="text/javascript"> //<![CDATA[ function addListener(obj,event,func){ if(obj.attachEvent){ obj.attachEvent("on" + event,func); }else if(obj.addEventListener){ obj.addEventListener(event,func,false); } } window.oncontextmenu = function(){return false;} window.onload = function() { var textbox = document.getElementsByTagName('input'); for(i=0;i<textbox.length;i++){ if(textbox[i].className == "a"){ //1か0しか入らないようにしたいテキストボックスのクラス名 textbox[i].style.imeMode = "disabled"; addListener(textbox[i],"keypress",function(){ return (event.keyCode==49 || event.keyCode==48)?true:false; }); } } } // ]]> </script> </head> <body oncontextmenu="return false;"> <input class="a" type="text" name="a1" value="" /> <input class="a" type="text" name="a2" value="" /> <input class="b" type="text" name="a3" value="" /> </body> </html>

参考URL:
http://www.tohoho-web.com/js/regexp.htm
Hirathi-
質問者

お礼

違う方法でかっこよく思いましたが、知識が浅いため理解するのに時間がかかりそうです。 別の時にじっくり考えたいと思います。 ご教示、ありがとうございました。

関連するQ&A

専門家に質問してみよう