javascript中的CheckBox验证失败,单个复选框

时间:2014-09-29 12:13:25

标签: javascript jsp validation checkbox

我在JSP页面上动态创建了复选框,如下所示

<form name="CancelForm" onsubmit="return validate();" action="ServletCancel" method="post">                  
<%   
for(int index=0 ; index<lstID.size() ; index++)
{
     String strBookingID = lstID.get(index);
%>
<input type="checkbox" name="BookingID" value="<%=strBookingID%>">
<%
}%>
<input type="submit" value="Cancel" class="button1"/>
</form>

为了验证相同,我有以下JavaScript代码来验证表单中的至少一个Checkbox是否被选中,如果是,它应该返回&#34; true&#34;别的&#34;假&#34;警告检查至少一个选项。

function validate() { 
    var flag = "false";
    var CHKBBookingID = document.CancelForm.BookingID;

    alert("length of checkboxes >> "+CHKBBookingID.length)
    for (var i = 0; i < CHKBBookingID.length ; i++) { 
        if (CHKBBookingID[i].checked == true) { 
            flag = "true";
        } 
    }    
    if(flag == "false"){
        alert("You have not selected any passenger yet!");
        return false;
    } else {
        return true;
    }
} 

如果我在表单中有2个或更多复选框,则此验证工作完全正常 但另一方面,如果我只有一个复选框,验证警报会显示&#34;长度&#34; Checkbox as&#34; undefined&#34;即使检查了表单上唯一的复选框

,也会失败

1 个答案:

答案 0 :(得分:2)

var CHKBBookingID = document.CancelForm.BookingID;

导致问题。如果您将其命名为var,则将其视为变量,因为您传递了一个元素。

因此您需要将javascript数组初始化为

var CHKBBookingID = Array(document.CancelForm.BookingID)

将它们输入数组

Learn More. .

更新:

使用jquery您可以轻松获取复选框的数量

var CHKBBookingID = new Array();
$.each($("input[name='BookingID[]']:checked"), function() {
  values.push($(this).val());
  // or you can do something to the actual checked checkboxes by working directly with  'this'
  // something like $(this).hide() (only something useful, probably) :P
});