我在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;即使检查了表单上唯一的复选框
,也会失败答案 0 :(得分:2)
var CHKBBookingID = document.CancelForm.BookingID;
导致问题。如果您将其命名为var
,则将其视为变量,因为您传递了一个元素。
因此您需要将javascript
数组初始化为
var CHKBBookingID = Array(document.CancelForm.BookingID)
将它们输入数组
更新:
使用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
});