我需要确保如果没有勾选至少一个复选框(很多),表单不会提交,这就是我现在所拥有的,我认为它应该有效:
<script type="text/javascript">
function valthis() {
var checkBoxes = document.getElementsByClassName( 'myCheckBox' );
var isChecked = false;
for (var i = 0; i < checkBoxes.length; i++) {
if ( checkBoxes[i].checked ) {
isChecked = true;
};
};
if ( !isChecked ) {
alert( 'Please, check at least one checkbox!' );
return false;
}
}
</script>
我很感激我能得到任何帮助!!!
问:梅森。答案 0 :(得分:1)
这看起来很不错,但您在提交表单之前请致电valthis()
,您可以这样做&#34;手动&#34;验证一切正常后,在代码中。
基本上,这意味着您有一个实际调用valthis
的基本按钮(而不是&#34;提交&#34;一个):
<input type="button" onClick="valthis()" ></input>
然后在valthis()
:
document.getElementById("myForm").submit();
答案 1 :(得分:0)
您没有提供有关实际问题的详细信息,因此无法准确说出出现了什么问题。
这是你应该拥有的,无论你实际拥有的是什么都没有实际意义。表单上应该有一个提交监听器:
<form onsubmit="return valthis(this)" ... >
表格中应该有一个提交按钮:
<input type="submit">
或
<button>Submit</button>
提交侦听器应返回 false 以取消提交,或任何其他值不取消。该函数应该有一个更有意义的名称,比如“checkCheckboxes”,一旦找到复选框,循环就会返回:
function valthis() {
var checkBoxes = document.getElementsByClassName( 'myCheckBox' );
var isChecked = false;
// Break from loop if isChecked is true
for (var i = 0; i < checkBoxes.length && !isChecked; i++) {
isChecked = checkBoxes[i].checked;
}
return isChecked;
}
在一个块之后不需要分号,它将代表一个空的陈述(没有任何危害,只是多余的)。
如果您能保证对现代API的支持,那么:
<form onsubmit="return this.querySelectorAll('input[type=checkbox]:checked').length > 0;" ...>
会做的。