簡體   English   中英

Javascript復選框驗證不檢查是否已勾選

[英]Javascript Checkbox Validation not Checking if Ticked

我已經仔細研究了人們已經對此提出的許多問題,但是我找不到能夠幫助我的解決方案。

我是編程的初學者,所以對操作一無所知,我有四個復選框並提交表單,您必須至少選擇其中一個,但不會出現任何消​​息,並且無需提交表單即可被打勾的盒子之一。

這是我的代碼如下:

        <tr>
       <td align="right">
        <label for="erdbeersocken"><p>Erdbeersocken<sup>*</sup>:</label>
        <br>
        <label for="armstulpen">Armstulpen<sup>*</sup>:</label>
        <br>
        <label for="cupcakes">Cupcakes<sup>*</sup>:</label>
        <br>
        <label for="babykleidung">Babykleidung<sup>*</sup>:</label>
        <br>
       </td>       
       <td align="left">
<form action="../" onsubmit="return checkCheckBoxes(this);">
    <input type="CHECKBOX" name="CHECKBOX_1" value="Erdbeersocken">
    <br>
    <input type="CHECKBOX" name="CHECKBOX_2" value="Armstulpen">
    <br>
    <input type="CHECKBOX" name="CHECKBOX_3" value="Cupcakes">
    <br>
    <input type="CHECKBOX" name="CHECKBOX_4" value="Babykleidung">
    <br>
    <input type="SUBMIT" value="Submit!">
    </td>
</tr>   
</form>

<script type="text/javascript" language="JavaScript">
<!--
function checkCheckBoxes(theForm) {
    if (
    theForm.CHECKBOX_1.checked == false or
    theForm.CHECKBOX_2.checked == false or
    theForm.CHECKBOX_3.checked == false or
    theForm.CHECKBOX_4.checked == false)
    {
        alert ('You didn\'t choose any of the checkboxes!');
        return false;
    } else {    
        return true;
    }
}
//-->
</script>

看起來像:在此輸入文字(在此選中復選框)

我正在使用Notepadd ++,但似乎無法使用更高級的代碼,因此,如果有人可以通過簡化的JavaScript幫助我,我將不勝感激。 :)

  function checkCheckBoxes(theForm) {
     if ($("input[type='checkbox']:checked").length){
        return true;
     }else{
          alert ('You didn\'t choose any of the checkboxes!');
         return false;
     }
 }

對於您的表單,應為所有復選框賦予相同的名稱,但為每個復選框賦予不同的值-這將為您的復選框創建一個數組(如果您尚不知道數組是什么,請參閱響應底部的注釋):

<input type="CHECKBOX" name="CHECKBOX" value="Erdbeersocken">
<br>
<input type="CHECKBOX" name="CHECKBOX" value="Armstulpen">
<br>
<input type="CHECKBOX" name="CHECKBOX" value="Cupcakes">
<br>
<input type="CHECKBOX" name="CHECKBOX" value="Babykleidung">

然后在您的Confirm Submit函數中,您要使用帶有兩個嵌套if語句的for循環來檢查是否已選中復選框。 我給你一個我最近做過的代碼的例子:

var interestsSelected = false;
for (var i = 0; i < document.forms[0].interests.length; ++i ) {
if (document.forms[0].interests[i].checked == true) {
interestsSelected = true;
break;
//code gives go ahead for submission because at least one checkbox has been checked
        }
    }
 if (interestsSelected !=true) {
        window.alert("You must select at least one hobby or interest");
        return false;
        //code Woot woot woot!  It all works!
    }

這是我的復選框的表單部分:

<input type="checkbox" name="interests" value="technology" />Technology <br />
<input type="checkbox" name="interests" value="arts" />The Arts <br />
<input type="checkbox" name="interests" value="music" />Music <br />
<input type="checkbox" name="interests" value="film" />Movies <br/> 
<input type="checkbox" name="interests" value="shopping" />Shopping <br />
<input type="checkbox" name="interests" value="outdoor" />Camping <br />
<input type="checkbox" name="interests" value="garden" />Gardening <br />

作為一個初學者:)如果所有內容都以盡可能簡單的語言拼寫出來,我經常會發現它很有用,因此我將在此處提供您可能會或可能不知道的一些詳細信息。

每當您創建表單時,都會自動創建該表單的數組(您不會在任何地方看到該數組,瀏覽器在訪問表單數據時會自動創建一個數組,但您可以(應該)在編碼中引用它)。 因此,如果您的頁面上有一個表單,您將有一個數組form [0],如果您的頁面上有兩個不同的表單,則第一個表單將有一個數組form [0],第二個表單將有一個數組form [ 1],每個都包含各自形式的所有元素。

如果將所有復選框都命名為相同的名稱,則實際上是在數組中創建一個數組-大的Mama Bear數組為forms [0],而嵌套在其中的是Baby Bear數組(您的復選框名[])。

為了引用Baby Bear數組,您必須首先確認Mama Bear數組:這就是為什么在我上面給出的代碼示例中,您看到“ document.forms [0]”(Mama Bear數組)后跟“”。興趣[i]”(嬰兒熊數組)。

希望這可以幫助 :)

以HTML為例

<!DOCTYPE html>
<html>
<head lang="en">
    <meta charset="UTF-8">
    <title></title>
</head>
<body>

<p>Select a box</p>
<form id="aform">
    <input type="checkbox">
    <input type="checkbox">
</form>

<script src="//code.jquery.com/jquery-1.11.3.min.js"></script>
<script src="test.js"></script>
</body>
</html>

以及JavaScript在其自己的文件中(始終將CSS和HTML中的代碼分開)

window.onload=function() {
    $("#aform").change(function () {
        alert('a box is checked');
    })
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM