formの判別について

このQ&Aのポイント
  • テキストボックスの入力確認とページ遷移のスクリプトについての質問です。
  • スクリプトの実行がうまくいかない場合、どこが問題なのか教えてください。
  • フォームのテキストボックスが空かどうかをチェックし、空でない場合に次のページに遷移するスクリプトです。
回答を見る
  • ベストアンサー

formの判別について

テキストボックスが空だったら、alertをだし、からじゃなかったら次のページへ飛ぶというスクリプトを実行させたいのですが、うまくいきません。 以下のどこがおかしいのかご教授いただけないでしょうか? --------------以下スクリプト ●htmlのヘッダへ記入 <script language="JavaScript"> <!-- function checkForm(form){ /* IDのチェック */ if(!form.text1.value){// 未入力のチェック alert("IDが入力されていません。"); }else{   document.location.href="next.html";   } } //--> </script> ●html内のフォーム側 <form action="" onSubmit="checkForm(this)" method="post"> <input type="text" size="50" name="text1" maxlength="10"> ----------------------------------以上

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

  • ベストアンサー
  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.1

次のページにポストするという意味合いであれば、 >document.location.href="next.html"; ではなくて form.action="next.html"; とするべきだと思います。 また、このような場合には onSubmit="return checkForm(this)" とかして alert("IDが入力されていません。"); return false; のようにfalseを返すようにしてやるとSubmitを中止することができます。 単に入力チェックをして次のページに変移するだけだったら、 <button type="button" onclick="checkForm(form)">次のページ</button> のようにたんなるボタンにして document.location.href="next.html"; すればいいと思います。

badnose
質問者

お礼

うごきましたー ><button type="button" onclick="checkForm(form)">次のページ</button> >のようにたんなるボタンにして >document.location.href="next.html"; を使いました。 ばっちりでした ありがとうございまーす。

関連するQ&A

  • form の onSubmit がコールされません;

    JavaScript初心者のyuki_xです。よろしくお願いします☆ 以下のコードで、 <チェック>を押下したときの動作が上手くいきません。 どうしてなのか、さっぱりわからないので教えてください!! 私の予定では、 1)<チェック>押下 2)nextPage() が呼ばれる 3)nextPage() で onSubmit イベントが発生 4)onSubmit に記述されている check() が呼ばれる となるはずなのですが、onSubmit イベントが発生していないようなのです。 alert() をいれて確認したところ、nextPage() が呼ばれたあと、 FORM の action に書かれている next.html へ移ってしまいます。 check() は呼ばれません。 どこが間違っているでしょうか? <SCRIPT TYPE="text/javascript" LANGUAGE="JavaScript"> <!-- function nextPage() { document.myform.type.value = n; document.myform.submit(); } function check() { //入力チェック } //--> </SCRIPT> <FORM action="next.html" method="post" name="myform" onSubmit="return check()"> <INPUT type="hidden" name="type" value=""> <INPUT type="button" value="チェック" onClick="nextPage();"> </FORM> (IE を使っています。)

  • formタグ

    HTMLで、formを使用し、CGIへテキストエリアのデータをpostしたいと 考えております。 テキストエリアを3つ、ボタンを1つ設けるならば 通常以下のようにすると思います。(必要部分の抜粋) <form action="foo1.cgi" method="post" ENCTYPE="multipart/form-data"> <input type="text" name="text1" value="text1" size=50 maxlength=100> <input type="text" name="text2" value="text2" size=50 maxlength=100> <input type="text" name="text3" value="text3" size=50 maxlength=100> <input type="submit" name="aaa" value="実行"> </form> こうすると、実行ボタンをクリックすると、text1、text2、text3のテキストエリアに 記述されているテキストが送信されますが、ここにボタンをもう一つ設け、 上記3つのデータを別のCGIに送信したいのですが、 この場合どのようにHTMLを記述したらよいでしょうか? 新たに下記のようにformタグを設けると、テキストエリアは6つになってしまいますし。。。 <form action="foo2.cgi" method="post" ENCTYPE="multipart/form-data"> <input type="text" name="text1" value="text1" size=50 maxlength=100> <input type="text" name="text2" value="text2" size=50 maxlength=100> <input type="text" name="text3" value="text3" size=50 maxlength=100> <input type="submit" name="aaa" value="実行2"> </form> どなたか分かる方情報頂けますか。

    • ベストアンサー
    • HTML
  • javascriptで別ファイルで変数を取得する。

    A.htmlで入力した文字をB.htmlに出るようにしたいのですが、全然出ません。 アラートは表示されるのですが、入力欄に何を打っても、 namae と出てしまいます。変数に何も入ってないようです。 これを〔javascript〕って入力すれば、アラートに〔javascript〕って出るようにしたいのですが、どうしたらよろしいでしょうか? 〔A.html〕 <script type="text/javascript"> var val=namae; window.localStorage.setItem("result", val); </script> <form action="B.htm" id="form1" method="post" onsubmit="check()"> <p>名前<br><input type="text" name="namae" id="buttom" size="28" /></p> <input type="submit" value="送信"/> </form> 〔B.html〕 <script type="text/javascript"> var val = window.localStorage.getItem("result"); alert(val); </script>

  • FormのonsubmitでJavaスクリプトを複数使えますか

    こんにちは。 いまフォームページで送信前に記入漏れがないかチェックするのに、スクリプトを使っています。 <form action="../cgi-bin/form.cgi" method="post" name="bkform" onSubmit="return Check()"> このほかに、スパム防止のためJcapというスクリプト(画像で出てくる文字を入力させる)を使うことにしました。 画面上に表示はできるようになったのですが、こちらのスクリプトも <form method="post" action="/cgi-bin/form.cgi" onSubmit="return jcap();" name="xfrm"> というようにonsubmitが必要です。 この二つのスクリプトを1つのページで動かすことは可能なのでしょうか? ご教授お願いいたします・・・。

  • formについてFirefoxで動作させたい

    IEとGoogle Chromeでは動作が正常に確認できました。 Firefoxでも正常に動作するようにしたいのですが、何処を直せば良いのでしょうか? クリックしてもボタンが動いてないようなのですが・・・・。 すみません、どなた様かご存知でしたら、どうぞよろしくお願い致します。 <script type="text/javascript"> function PassChack(){ var passWord = passF.pass.value; if(passWord ==""){ alert("パスワードが未入力です"); return false; }else if(passWord == "aaa"){ location.href = "aaa.html"; }else{ alert("パスワードが間違っています"); } } </script> <form method="post" id="passF">   <input type="text" name="pass" id="pass" size="30" value="" /><input type="button" value=" 実行 " onclick="PassChack();return false;" /> </form>

  • 異なるname属性のテキストの入力チェックについて

    異なるname属性のテキストの入力チェックについて よろしくお願いします。 それぞれname属性の異なるテキスト群があるのですが、 どれかひとつに数字を入力しないと、アラートが出るようにしたいと思っています。 <form action="mail.cgi" method="post" onSubmit="return check(this);"> <input type="text" name="maru" /> <input type="text" name="sankaku" /> <input type="text" name="shikaku" /> </form> この場合のコードの記述方法をお教え頂ければ幸いです。 どうぞよろしくお願い致します。

  • input type="image" 複数の画像がある場合のSubmit

    いつもお世話になります。 早速ですが質問です。 function Check(){ if(document.form.text.value==""){ alert('入力してください'); return false; } return true; } <form name="form" action="./form.cgi" method="post" onSubmit="return Check();"> <input type="text" name="text"> <input type="image" src="img/back.gif" name="btn01" alt="戻る"> <input type="image" src="img/next.gif" name="btn02" alt="進む"> </form> とあります。 テキストボックスの値が空の場合は【進む】を押したときにエラーを出し、 【戻る】を押したときは値の入力に関係なくページを移動したいです。 どなた様かよろしくお願いします。

  • フォーム内のテキストフィールドにアドレスを入力後、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> ご存知の方がおられましたらご回答をよろしくお願いします。

  • formのsubmitイベントの発生についての質問です。

    formのsubmitイベントの発生についての質問です。 あるところで、「form.submit() は submit イベントを発火しない」 とあったので、 ↓のscriptで、formのsubmitイベントを調べていました。 <!DOCTYPE html> <html lang="ja"> <head> <meta charset="UTF-8"> <title>SessionTestNext</title> <style type="text/css"></style> <script type="text/javascript"> function send1(elm){  elm.form.submit(); } function send2(){  document.getElementById("form1").submit(); } if('undefined' !== typeof document.addEventListener){  document.addEventListener('submit', function(event){   var target = event.target;   alert(target.id);  }, false); } else if ('undefined' !== typeof document.attachEvent){  document.attachEvent('onSubmit', function(event){  var target = event.srcElement;  alert(target.id);  }); } </script> </head> <body> <p>SessionTestNext 1 </p> <form id="form1" action="/php/session2.php" method="post" onsubmit="alert('Submited!');return false;"> <input type="text" name="parm2" value="fugafuga"> <input type="submit" value="サブミット"> <button onclick="send1(this)">Javascriptサブミット(1)</button> </form> <button onclick="send2()">Javascriptサブミット(2)</button> </body> </html> だのに、 send1()を実行した時は、イベントが検知され'Submited!'がアラートします。 ただし、onsubmitのハンドラーでfalseを返してるので、サブミットしません。 send2()を実行した時は確かに、submitイベントは発生せず、'Submited!'の アラート無しで、実際サブミットされます。 documentにaddEventListenerで追加したハンドラーの方でも、send1()の 時だけ検知され'form1'がアラートします。  send1()で検知されるのは何故でしょう? また、IEでも同様の動作なんですが、何故か document.attachEvent('onsubmit', の方が、まったく動きません。(タイポかも)

  • onSubmit=の後ろは複数可能でしょうか?

    <SCRIPT language=JavaScript><!-- function check() { ・ ・ ・ <FORM action="mailto:××@××.com method="post" enctype="text/plain" name="myform" onSubmit="return Check()"> で未記入のものを確認してアラートを出すようにしています。 この機能にフォーム送信後、指定ページへ移動するようにしたいのですが、それは 可能ですか?となると別ページへの移動は function Start(){ setTimeout('window.location.href="他のページのファイル名.htm"',5000); } // --> </SCRIPT> ・ ・ ・ <FORM action="mailto:××@××" method="post" enctype="text/plain" name="myform" onSubmit="Start()"> になると思うのですが、onSubmit=の後に"return Check()"と "Start()"というのは両方使えるものなのでしょうか?;でつないでも正しく動いてくれません。ページ移動が無理なら、"return Check()"を使う、 sent=0 function Check(){ if(sent==0){ sent=1; return true; }else{ if(confirm("1度送信された可能性があります。")){ return true; }else{ return false; } } } かなと思ったのですが、これだと未記入の場合のアラートが出なくなります。 もう行き詰まってしまいました・・。 解決策をご存知の方、ぜひお願いします!

専門家に質問してみよう