ホームページ >ウェブフロントエンド >jsチュートリアル >JSのform.submit()がフォームを送信できない理由

JSのform.submit()がフォームを送信できない理由

PHPz
PHPz転載
2016-05-16 16:34:421918ブラウズ

この記事では、JS の form.submit() がフォームを送信できないエラーの理由を主に紹介します。この記事の最終的な結論は、必要な友達が参照できるボタンの ID と名前に submit を使用しないことです。

コードに直接移動します:

<p id="register">
     <h4>会员注册</h4>
     <p class="formp">
         <form method="post" action="register.php?action=register" name="register" id="registerForm">
             <dl>
                 <dt>请认真填写以下内容</dt>
                 <dd class="hasspan">
                     用户名:<input type="text" name="username">
                 </dd>
                 <dd class="hasspan">
                     密码:<input type="password" name="pwd">
                 </dd>
                 <dd class="hasspan">
                     确认密码:<input type="password" name="pwdagain">
                 </dd>
                 <dd id="tximg">
                     <img src="img/face/m01.gif" alt="选择头像" id="faceimg">
                     <input type="hidden" name="touxiang" value="">
                     <label id="imgsrclabel">m01.gif</label>
                 </dd>
                 <dd style="margin-right:120px;">
                     验证码:<input type="text" name="code">
                     <span>
                         <img src="code.php" alt="code" id="code" name="code">
                         <a href="#code" id="change">换一张</a>
                     </span>
                 </dd>
                 <dd class="btns">
                     <input type="button" name="submit" id="submit" value="注册">
                     <input type="button" name="quit" id="quit" value="退出">
                 </dd>
             </dl>
         </form>
     </p>
 </p>

このページにフォーム データを送信します。以下は JS 処理です

/*注册表单提交*/
 function formDeal()
 {
     var btnSubmit = document.getElementById(&#39;submit&#39;);
     var formId = document.getElementById(&#39;registerForm&#39;);
     btnSubmit.onclick = function()
     {
         //表单的submit()方法不能提交表单
         formId.submit();
     }
 }

フォームが送信された場合、このページにプロンプ​​ト メッセージが表示されます

if(!empty($_GET[&#39;action&#39;]) && $_GET[&#39;action&#39;] == &#39;register&#39;)
 {
     echo &#39;你提交了数据&#39;;
     exit();
 }

結果は、コードまたはメソッドが間違っているためだと思いましたが、長い間テストした後もプロンプト メッセージが表示されませんでした。間違って書かれていたので、公式の結果文書を注意深く確認し、間違いがないことを確認しました。

formId.submit() が送信できないので、とりあえず btnSubmit の型を変更して送信する必要がありました

 this.type="submit"

ネットで情報を調べたところ、理由が分かりました2 点:

1. フォームにタグ name="submit"

を含めることはできません。2. フォームに "enctype="multipart/form-data""

を含めることはできません。

テスト後、これら 2 つの点はばかげており、問題は解決しませんでした (問題の環境が異なる可能性があります)

その後、フォーラムの友人が登録ボタンの ID を次のように変更することを提案したと思いました。送信せずに別の名前を使用します。修正後、フォームは正常に送信され、プロンプト メッセージが表示されます。

最終要約: 送信するボタンの ID を設定しないでください。設定しないと、混乱が生じ、フォームの submit() メソッドがフォームの送信に失敗する可能性があります。 ID に名前を付けるときは、不要な煩わしさを避けるために、既存の API と名前を重複させないことをお勧めします。

声明:
この記事はjb51.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。