我知道@stackoverflow可能有一些类似的问题,但我还没找到解决问题的方法:s
<?php
while($rowVideo = mysql_fetch_array($ResultQueryVideo))
{
?>
<input type="checkbox" name = "checkbox-1[]" class="checkbox" value ="<?php echo $rowVideo['idVideo'] ?>" /> <?php....some code...
这会产生一些复选框,与idVideo相同的数字......就是这一点。
现在,在提交之前,我需要确保至少选中一个复选框。但我不是太过分了:x
function isCountCheck (helperMsg) {
var chkCnt = 0;
var Frm = document.forms[0];
var dLen = Frm.length - 1;
for (i=0;i<=dLen;i++) {
if(document.form1.["checkbox-1[]"].checked) chkCnt++;
}
if (chkCnt>0) {
return true;
} else {
alert(helperMsg);
return false;
}
}
额外细节: 表格名称=“form1”
你可以指导我说谎吗? 感谢编辑:
function isCountCheck(){
if($("input[type=checkbox]:checked").length > 0)
{
return true;
}
else
{
alert('Invalid');
return false;
}
}
但仍然没有工作......即使显示警报..
答案 0 :(得分:3)
主要问题是你没有在循环中使用i
索引来引用各个复选框,而在.
之前你有一个[
语法错误。所以改变:
if(document.form1.["checkbox-1[]"].checked) chkCnt++;
要:
if(document.form1["checkbox-1[]"][i].checked) chkCnt++;
但你可以按照以下方式对函数进行补充:
function isCountCheck(helperMsg) {
var i, dLen = document.form1["checkbox-1[]"].length;
// if the length property is undefined there is only one checkbox
if (typeof dLen === "undefined") {
if (document.form1["checkbox-1[]"].checked) return true;
}
else {
for (i = 0; i < dLen; i++) {
if (document.form1["checkbox-1[]"][i].checked) return true;
}
}
alert(helperMsg);
return false;
}
演示:http://jsfiddle.net/nnnnnn/ZjK3w/1/
或者只是遍历表单中的所有输入,检查每个的类型(和/或名称):
function isCountCheck(helperMsg) {
var i, len, inputs = document.form1.getElementsByTagName("input");
for (i = 0, len = inputs.length; i < len; i++) {
if (inputs[i].type === "checkbox"
&& inputs[i].checked)
return true;
}
alert(helperMsg);
return false;
}
答案 1 :(得分:2)
var form = document.forms[0]; // your form element (whatever)
var checkedElms = form.querySelectorAll(':checked').length;
不需要jQuery。支持IE8。如果您愿意,可以在旧版浏览器中使用polyfill。
答案 2 :(得分:0)
使用Jquery:
function isCountCheck(helperMsg){
if($("input[type=checkbox]:checked").length > 0)
return true;
alert(helperMsg);
return false;
}