我尝试了很多选项,但没有任何效果。
主要问题是我有很多复选框都是通过php循环生成的,因此它们具有相同的名称和ID。我想在提交该表格时检查是否应该检查至少一个表格。我已经尝试了这么多功能,所以不确定应该粘贴在哪里。所以最好有人建议我一些新的答案。
function Validate_Checkbox()
{
var chks=document.getElementsByTagName('input');
var hasChecked = false;
for (var i = 0; i < chks.length; i++)
{
if (chks[i].checked)
{
hasChecked = true;
break;
}
}
if (hasChecked == false)
{
alert("Please select at least one checkbox..!");
return false;
}
return true;
}
在表单标记中称为onsubmit="return Validate_Checkbox()"
。
基本上我正在寻找一个JavaScript函数。
答案 0 :(得分:2)
您的代码可以用于您描述的目的。它可能更短,但没有明显的问题。
缩短版
function validate_checkbox() {
var cbs = document.getElementsByTagName('input');
for (var i=0, len = cbs.length; i < len; i++)
if (cbs[i].type.toLowerCase() == 'checkbox' && cbs[i].checked)
return true;
alert("Please check at least one checkbox");
return false;
}
更短的版本(如果你不关心旧的IE)
function validate_checkbox() {
var checked = document.querySelectorAll('input[type=checkbox]:checked').length;
if (!checked) alert("Please select at least one checkbox");
return !!checked;
}
注意:
1)ID必须是唯一的 - 您不能跨多个元素重复ID
2)在JavaScript中,将开放花括号放在同一行而不是下一行
更好(出于超出本文范围的原因)3)除非你打算实例化它们,否则避免大写函数
答案 1 :(得分:0)
text
或submit
按钮,则代码将失败。首先,你必须检查是否是复选框。
if (chks[i].type=="checkbox" && chks[i].checked)
如果使用jQuery
,事情会更容易if ($('input:checked').length < 1){
//Nothing checked
}
答案 2 :(得分:0)
功能似乎很好。你确定它被调用了吗?尝试使用firefox“Firebug”调试它。 打开firebug-&gt;脚本,然后在此函数上添加断点。
答案 3 :(得分:0)
为什么要在提交时检查?我使用Mootools编写了一个函数,在每个复选框上调用onchange并检查同一div中的每个复选框。如果没有选中其他复选框,则用户无法取消选中上次选中的复选框。
<input type='checkbox' onChange='validateCheckboxes(this)' name='name' value='val' >
function validateCheckboxes(elem){
var checked = elem.checked;
elem.getParent().getElements("input[type=checkbox]").each(function(e){checked += e.checked});
if(checked == 0){
elem.checked = 1;
}
}