• ベストアンサー

フォームで条件によってボタンの処理を変える

フォームでパスワードを入力してもらい、確認用にもう一度入力した際、 誤入力があればアラート、正しく同じ値が入力されればsubmitにしたいと思っており、下記のようなコードを書きましたが、同じ値を入力した際にIEでエラーがでてしまいます(FirefoxやSafariでは動きます)。 当方Javascriptの知識に乏しく、どなたか助けていただけませんでしょうか?宜しくお願いいたします。 <html> <script language="JavaScript"> <!-- function passCheck(){ pass1 = document.free.PASSWORD.value; pass2 = document.free.PASSWORD2.value; if(pass1!==pass2) {alert("入力された確認用パスワードが違います");} else if(pass1==pass2) {document.free.submit.type="submit";} } //--> </script> <body> <form method="POST" action="submit.cgi" name="free"> <p> <input type="password" size="20" name="新パスワード" id="PASSWORD"><br> <input type="password" size="20" name="新パスワード(確認)" id="PASSWORD2"> </p> 確認のため、上記と同じパスワードをご記入ください。 <p><input type="button" name="submit" value="確認する" onclick="passCheck()"/></p> </form> </body> </html>

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

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

突っ込みどころがおおい質問です・・・ まずformにnameをつけるのは非推奨、今回はinputにidがついているので とくにつけなくてもよいでしょう formの予約語の「submit」をボタンの名前にするのは厳禁 誤作動の原因になります。 またブラウザによってtypeは読み取り専用の場合があります。 typeを書き換えるという方法はお勧めできません。 やはりフォーム.submit()が妥当でしょうね。 <html> <head> <script type="text/javascript"> function passCheck(f){ var pass1 = document.getElementById("PASSWORD").value; var pass2 = document.getElementById("PASSWORD2").value; if(pass1!==pass2) {alert("入力された確認用パスワードが違います");} else{f.submit();} } </script> </head> <body> <form method="POST" action="submit.cgi"> <p> <input type="password" size="20" name="新パスワード" id="PASSWORD" /><br> <input type="password" size="20" name="新パスワード(確認)" id="PASSWORD2" /> </p> 確認のため、上記と同じパスワードをご記入ください。 <p><input type="button" name="submit" value="確認する" onclick="passCheck(this.form)" /></p> </form> </body> </html>

btnistho
質問者

お礼

いろいろとご指摘有難うございます。 おかげでより正しいソースを書くことができそうです。

その他の回答 (4)

noname#75656
noname#75656
回答No.5

横やりになってしまいますが、、、 >すこしは調べようよ>#3 これは、あなたに言いたいですね>#4 非推奨なのは、XHTMLであってHTMLでは非推奨ではありませんよ。

btnistho
質問者

お礼

有難うございます。 皆様のおかげで理解が深まります。

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.4
btnistho
質問者

お礼

有難うございます。 皆様のおかげで理解が深まります。

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

JavaScriptに !== なんて演算子ありましたっけ? 否定なら != でいいのでは。 あと、ちょっと前から気になっていたことが。 > まずformにnameをつけるのは非推奨、 よく、ここでformにneme属性与えるのは非推奨というのを聴きますが それはどこからの情報でしょうか。 少なくてもぼくはよそで聴いたことないです。 まあ、全体的にname属性自体が廃止の方向に進んでいるというのは 間違いないようですが(ただし、inputやtextareaなどの各フォームの 値を送信できるのはnameのみなのでこれは必須ですけど)。 lintなどでも<a>などでは警告がでますけど<form>ではでませんし。

btnistho
質問者

お礼

有難うございます。 皆様のおかげで理解が深まります。

  • kokorone
  • ベストアンサー率38% (417/1093)
回答No.1

document.free.submit.type="submit";   を、submit(); に変更してみては?

btnistho
質問者

お礼

すみません、補足無視してくださって結構です。 お騒がせして申し訳ございません。 おかげさまで、無事動作いたしました。本当に有難うございます。

btnistho
質問者

補足

お答えいただき有難うございます。 質問の仕方がまずかったかと思います。すみません。 2つのパスワードに同じ値が入力されれば、「確認する」ボタンをtype="submit"にしてsubmit.cgiを動かしたいのです。 (違う値が入力されたらアラートが表示されるのみ) そもそも元のコードに欠陥がありそうですが。。。

関連するQ&A

  • HTMLのフォームでのデータの持っていきかたについて

    HTMLとPHPを使いアカウント作成のページを作成しています。 テキストボックスに名前等を入力して登録ボタンを押すときに、パスワード認証画面(アカウント作成用のパスワードを入力)を経由して次の画面に行きたいと考えています。その際にはテキストボックスに入力したデータを持っていかなければならないのですが、うまく持っていってくれません。 actionに直接javascriptを入れるとデータは持っていってくれないのでしょうか? よろしくお願いします。 <form method='post' action="JavaScript:var pass=prompt('パスワードを入力してください','****');if(pass){location.href= pass+'.php';}"> <p>名前<input type="text" name='hName' value='$hName'></p> <p>住所<input type='text' name='hpostcode2' value='$hpostcode'></p> <p>コード番号<input type='text' name='haddress2' value='$haddress'></p> <input type="submit" value='$hNamebutton2'> </form>

    • ベストアンサー
    • HTML
  • phpでmysqlに接続してテーブルのデータを抽出

    テーブルのデータを抽出したいのですけど テーブルに idと対応するpassワードがあったとすると 入力フォームみたいのを作って 認証したいidとpassワードを入力してもらって それをテーブルにあるのか確認したい場合どうしたらいいでしょうか? 入力フォームはこうなっています <html> <head> <title>ユーザ認証</title> </head> <body> ユーザ認証<br> <form action="ninsyou.php" method="post" name="form1"> ユーザ名: <input name="id" type="text" id="fUserName"> <br> パスワード: <input name="pass" type="password" id="fPassWd"> <input type="submit" name="Submit" value="認証"> <input type="reset" name="Submit2" value="クリア"> </form> </body> </html> わかりにくい質問ですみません。

    • ベストアンサー
    • MySQL
  • 複数のsubmitボタンで押されたボタンを取得する方法

    form内の、submitボタンの値が拾えません。 1つだけsubmitボタンを設置すると値が拾えますが、 2つ以上submitボタンを設置すると拾えません。 仕様上、無理なのでしょうか? <SCRIPT language="JavaScript"> function move_post(){ alert(document.frmMvPost.btn.value); } </SCRIPT> <FORM name="frmMvPost" action="" method="post" onsubmit="return move_post()"> <INPUT type="submit" name="btn" value="テスト1"> <INPUT type="submit" name="btn" value="テスト2"> <INPUT type="submit" name="btn" value="テスト3"> </form>

  • 管理パスワードによる認証

    既存のファイルに管理者による認証を付加したいと思いますが、下記のコードではうまくいきません。アドバイス下さい。 <?php //パスワードの設定 $password = "admin"; //パスワードチェック passchk(); function passchk(){ global $password, $post; $p = $post['pass']; if ($p == $password) { echo "認証成功!"; // return; } else { echo<<<EOM <p>パスワードを確認して下さい。</p><br> <form action="login.php" method="post"> パスワード:<input type="password" name="pass" size="8"> <input type=submit value="ログイン" /> </form> EOM; exit; } } ?>

    • 締切済み
    • PHP
  • PHPでフォームからの送信

    PHPでフォームからデータを送信する方法について教えてください。例えばPHPファイルの中に下の様にフォームを作成して、送信ボタンを2つ作ります。一つのボタンをクリックすると全てのフォームの情報が送信されてしまいますが、独立して送信できるようにはできないのでしょうか。簡単にでもできるかできないかを教えていただけましたら、あとは自分でなんとかがんばりますので、どなたか教えていただけれますと幸いです。宜しくお願いします。 <form action="abc.php" method="post"> AAA:<input type="text" name="simei"> BBB:<input type="password" name="pass"> <input type="submit" value="送信"> </form> <form action="abc.php" method="post"> CCC:<input type="text" name="simei"> DDD:<input type="text" name="pass"> <input type="submit" value="送信"> </form>

    • ベストアンサー
    • PHP
  • 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>

  • フォームボタンのvalueを渡すにはどうしたらいいのでしょうか?

    下記のソースのように「word」というテキストフィールドの 入力チェック後ボタンのvalueをword.phpに渡したいのですがどのようにしたらいいのでしょうか? 入力チェックをせず input type="button"ではなくinput type="submit" にするとword.phpに渡せるのですが・・・ ようはA、B、Cそれぞれのボタンを押した時で word.phpでbtnのvalueをPOSTで受け取り 処理をvalue A、B、Cで分岐させたいんです。 よろしくお願いします。 <html> <head> <SCRIPT language="JavaScript"> <!-- function chk(chkfrm){ var tmp = chkfrm.word.value.length; if(tmp > 50 ){ alert("文字数が多すぎます"); } else{ chkfrm.submit(); } } //--> </SCRIPT> </head> <body> <form name="form" method="post" action="word.php"> <input name="word" type="text" id="word"> <input type="button" name="btn" value="A" onclick="chk(this.form);"> <input type="button" name="btn" value="B" onclick="chk(this.form);"> <input type="button" name="btn" value="C" onclick="chk(this.form);"> </form> </body> </html>

  • テキストボックス未記入時のアラート表示 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>

  • VBScript でのフォーム入力

    VBScript でWEBサイトにID,PASSワードを入力し自動ログインするプログラムを作成しています。 以下のコードで実行していますが 13行目、1文字目【オブジェクトがありません。】とエラーが出ます。 どのようにすればログインできるか教えてください。 【VBScript】 ==================================================================== '---------- ログイン情報 ID = "myid" PASS = "mypass" '---------- ログイン画面表示 Set myIE = CreateObject("InternetExplorer.application") myIE.Visible = True myPAGE = "http://test1.com/" 'サンプルURLです。実際のURLは別です。 myIE.Navigate myPAGE Do Until myIE.busy = False And myIE.readyState = 4 : Loop '----------  ID/PASSの入力 myIE.Document.getElementById("login_id ").Value = ID myIE.Document.getElementById("password").Value = PASS myIE.Document.getElementById("checkbox").Checked = True Set objINPUT = myIE.Document.getElementsByTagName("INPUT") 'ループで頭からテキストが ログイン を探す For n = 0 To objINPUT.Length - 1 If objINPUT(n).Value = "ログイン" Then objINPUT(n).Click Exit For End If Next Set objINPUT = Nothing Set myIE = Nothing ==================================================================== 【ログインしたい http://test1.com/ ページの該当ソース】 ==================================================================== <form action="./login.php" method="post"> <div class="noti " width="900px"> <div> パスワードは5回連続で間違えると停止します。 </div> </div> <p> <label>ログインID</label> <input class="text-input" type="text" name="login_id" /> </p> <div class="clear"></div> <p> <label>パスワード</label> <input class="text-input" type="password" name="password" /> </p> <div class="clear"></div> <p id="remember-password"> <input type="checkbox" checked />パスワードを記憶 </p> <div class="clear"></div> <p> <input class="button" type="submit" value="ログイン" /> </p> </form> ==================================================================== よろしくお願いいたします。

  • ボタン別でフォームの送信先を変えたい

    同じ場所に3つある今のフォームを1つにまとめたいのですが、 「ラジオボタン」でやるのではなく「submitボタン」によって送信先の振り分けはできないのでしょうか? CGIなどを使って一旦クッションを置くのは問題ないです。何か参考になるサイトさんとかありましたら教えてください。 <form action="1.php" method="get" class="form" target="a" name="1"> <input type="hidden" name="s" value=90 /> <input type="hidden" name="t" value="e" /> <input type="text" name="moji" value="" size="8" /> <input type="submit" name="button" value="検索" /> </form> <form action="http://e.php" method="get" name="2" target="a"> <input type="hidden" name="test" value=et /> <input type="text" name="77" value="" size="8" /> <input type="submit" value="検索2" class="button" /> </form> <form action="http://8.cgi" method="get" target="a"> <input type="text" size="8" name="q" value="" /> <input type="submit" value="検索3" class="button" /> <input type="hidden" name="sut" value="JJ" /> </form>

    • ベストアンサー
    • CGI

専門家に質問してみよう