- ベストアンサー
ループを抜け出したい
過去に同じような質問もありましたが、いろいろ検索してこちらの過去ログを拝見しても解決できなかったので質問させてください。 名前のテキストに記入して送信ボタンを押した時にアラートが出て抜け出せません。 名前をテキストに書いて送信を押した時にテキストを送りたいのですが、どうしたらよいでしょうか。 function chkHissu(frm){ var abe = frm.elements.name.value; if(abe.value=="");{ alert("名前は必須入力項目です"); frm.elements.name.focus(); return false; } } ご存知の方がいらっしゃいましたらご教授お願いします。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
指摘されている内容が反映されていないようですが・・・ var abe = frm.elements.name.value; if(abe.value=="");{ ↓ var abe = frm.elements.name.value; if(abe==""){ または、 var abe = frm.elements.name; if(abe.value==""){ または、 if(frm.elements.name.value==""){ あるいは、 if(!frm.elements.name.value){ と直せばOK JavaScriptは探すとサンプルが沢山見つかるのでそれを参考にすると早いと思います。 http://allabout.co.jp/internet/javascript/subject/msubsub_001022020.htm
その他の回答 (4)
- 神崎 渉瑠(@taloo)
- ベストアンサー率44% (1016/2280)
本当にこのまま使われてます? > if(abe.value=="");{ > alert("名前は必須入力項目です"); > (略) > } if()のうしろに ; がある様に見えますが、こう書くと if(abe.value==""){ ; //if文が真の時は何もしない } { //オブジェクト初期化子。 alert("名前は必須入力項目です"); } という意味になります。 ANo.3のvalueのを修正、 ; を消して、最後にreturn true;を追加しています。 動作未確認 function chkHissu(frm){ var abe = frm.elements.name; if(abe.value==""){ alert("名前は必須入力項目です"); abe.focus(); return false; } return true; }
お礼
ありがとうございました。おかげで無事解決いたしました。
補足
修正してみましたがやはりまだループしてしまうようです。 とりあえずhtmlで書いた文章をそのままのせてみます。 <html> <head> <title>入力フォーム</title> <link rel="stylesheet" href="../stylesheetcss/style.css"> <SCRIPT language="JavaScript"> <!-- function chkHissu(frm){ var abe = frm.elements.name; if(abe=="");{ alert("名前は必須入力項目です"); frm.elements.name.focus(); return false; } return true; } //--> </SCRIPT> </head> <body bgcolor="#ffffff"> <center> <form name="form1" method='post' action="http://game.gr.jp/buffer.cgi" onSubmit='return chkHissu(this)'> <table border="0" class=fox bgcolor="#000000"> <tr height="30"> <td width="400" colspan="2" bgcolor="#6090ef"><font color="#ffffff"> ||新規ユーザー登録</font></td> <td width="150" bgcolor="#ffffff"><b class="tob"> <img src="../kadai2/images/hin.gif">ヘルプ</b></td> </tr> <tr height="70" bgcolor="#ffffff"> <td width="120" class=spy class=spy><font color="red">* </font>名前</td> <td width="280"> <table border="0"><tr><td width="180"> <input type='text' name='name'> </td></tr></table> </td> <td width="150"> </td> </tr> <tr height="70" bgcolor="#ffffff"> <td width="120" class=spy>送信・クリア</td> <td width="280" colspan="2"> <input type='submit' value='送信'> <input type='reset' value='クリア'> </td> </tr> </form> </table> </center> <br> </body> </html> 長くなってしまって申し訳ございません。 ご面倒では御座いますが、アドバイスをお願いします。
- yambejp
- ベストアンサー率51% (3827/7415)
うーん var abe = frm.elements.name.value; とあるのに if(abe.value==""){・・・ とあるのはいかがなものかと。 if(abe==""){・・・ とかでは? abe.valueはおそらくundefinedだと思います
お礼
pipipi523さんと同じアドバイスだったのに私の理解不足ですぐに生かせずにすみませんでした。 ありがとう御座いました。
- X-trail_00
- ベストアンサー率30% (438/1430)
これ自体は問題じゃないと思います。 これをどのイベントで呼び出しているのかが問題だと思われます。 onfocusとかに書いてませんか? onblurとかonchangeに書かないといけません
補足
onSubmitで呼び出しているのですが、これではだめですかね。 送信ボタンを押した時にアラートが出て、名前がテキストに書かれていたらスルーするようにしたかったのですが、この場合はどうしたらよいでしょうか?
frm.elements.name.value name は 部品の名前 <input name="TEST"> なら frm.elements.TEST.value
お礼
ありがとう御座いました。 おかげで無事解決できました。 4時間考えて解決できなかった自分が恥ずかしいです。 本当にありがとう御座いました。 URLはこれからも参考にさせていただきます。