-1

チェックボックスグループを検証するための簡単なJavaScriptを書きました。JavaScript は問題なく動作しますが、html で正しく実装するのは難しいことがわかっています。私の試行では、検証に失敗したにもかかわらずフォームが送信されるか、送信ボタンがなくても他のすべてが正常に機能します。誰でも助けることができますか?ありがとう

  <form id="form1" name="form1" method="get" action="pre_process.php">
        <input name="q" type="text" value="<?php echo $_GET['q']; ?>" size="67"/>



<input type="submit" id="search_button" onclick= "chkChecks()" />
/////this line of code submits the form even when the javascript returns false

<input class="submit" type="button" onclick="chkChecks()" />
///this code works, doesn't send the form, but also takes away my nice shiny submit button

  ///////js code/////
    function chkChecks(){
isChecked=false

for(var i=0;i<document.forms["form1"]["SearchEngines[]"].length;i++){
if(document.forms["form1"]["SearchEngines[]"][i].checked){
isChecked=true
}
}

if(isChecked){
document.forms["form1"].submit()
}
else{
alert('Please select at least one Search Engine')
return false;
}

}
</script>

////また、検証されるフォームの部分

<table width="200">
              <tr>
                <td><label>
                  <input type="checkbox" name="SearchEngines[]" value="Bing" id="SearchEngines_0" checked="checked" />
                  Bing</label></td>
              </tr>
              <tr>
                <td><label>
                  <input type="checkbox" name="SearchEngines[]" value="Blekko" id="SearchEngines_1" checked="checked"  />
                  Blekko</label></td>
              </tr>
              <tr>
                <td><label>
                  <input type="checkbox" name="SearchEngines[]" value="Entireweb" id="SearchEngines_2" checked="checked" />
                Entireweb</label></td>
              </tr>
4

3 に答える 3

0

ボタンはフォームを送信しません - デフォルトでは何もしません。これらは通常、AJAX アプリケーションの一部として JavaScript と組み合わせて使用​​されます。

ボタンは、JavaScript で別の方法で指定しない限り、ユーザーがボタンをクリックしたときのフォームを送信します。

isChecked 変数が true または false であることを確認します。false の場合は、何らかのチェックを行い、その変数を true にします。

if(isChecked !== true) { 
    for(var i=0;i<document.forms["form1"] ["SearchEngines[]"].length;i++){  
       if(document.forms["form1"]["SearchEngines[]"][i].checked){
          isChecked=true 
       }
    } 
 }
于 2012-07-21T01:54:04.210 に答える
0
<input class="submit" type="button" onclick="chkChecks()" />

関数chkChecksは false を返す場合がありますが、属性から作成される実際のハンドラーは次のようになります。

function(event) {
    chkChecks();
}

戻り値が認識されるように、JavaScript を使用してイベント ハンドラーをアタッチすることをお勧めします。

document.getElementById("submitbutton").onclick = chkChecks;
于 2012-07-21T01:56:25.957 に答える
0

ここで私が提出した回答を確認できます。

オートコンプリートされていないフォームが送信されないようにする方法はありますか?

これは私がフォームの検証を行った方法です。フォームの検証を行うことができる他のツールもありますが、自分でやらない理由を考えました。より迅速かつ簡単に管理できます。

HTML で検証クラスを自分でハードコーディングするか、$(document).ready で jquery セレクターを使用することができます。

于 2012-07-21T01:56:40.140 に答える