复选框验证在JavaScript中没有对单个复选框
问题描述:
我在JSP页面中动态创建的复选框如下复选框验证在JavaScript中没有对单个复选框
<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代码来验证在Form ATLEAST一个复选框被选中,如果是这样,它应该返回“真”或其他“假”,并至少检查一个选项。
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;
}
}
此验证正在工作如果我在表单中有两个或多个复选框,那么这个验证非常好。
但是,如果我只有一个复选框另一方面验证警报显示为“不确定”,以及即使窗体上唯一的复选框被选中
答
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
});
非常感谢@San它正在工作。 – InCh 2014-09-29 12:26:37
很高兴我可以帮助:) – 2014-09-29 12:30:35
这听起来很有趣,但现在它不适用于多个复选框...不管复选框的数量是多少,它显示长度为1,如果存在多于1复选框,则失败并检查 – InCh 2014-09-29 13:07:25