我有这段代码,但它似乎没有返回true。警报始终显示。任何想法(不需要创建一个var来存储已选中的复选框,因为它看起来有点像hacky)。
感谢。
$("#form").submit(function(e) {
$('input[type=checkbox]').each(function () {
if(this.checked){
return true;
}
});
alert("Please select at least one to upgrade.");
return false;
});
答案 0 :(得分:19)
您无需执行循环来确定是否选中了复选框。 :checked
选择器会过滤掉所有未选中的内容。然后,您可以使用$.length
来获取已检查输入的计数。
$("#form").submit(function(e) {
if(!$('input[type=checkbox]:checked').length) {
alert("Please select at least one to upgrade.");
//stop the form from submitting
return false;
}
return true;
});
此外,使用您的方法,一个小的改变应该使这项工作
$("#form").submit(function(e) {
$('input[type=checkbox]').each(function () {
if($(this).is(':checked')){
return true;
}
});
alert("Please select at least one to upgrade.");
return false;
});
我认为您可能只是错过了$()
this
答案 1 :(得分:3)
请注意,您使用的是id引用#form
。您是指仅引用所有表单,还是表单的标识为form
?
答案 2 :(得分:0)
检查已检查的checbox数量的示例...
<script>
function countChecked() {
var n = $("input:checked").length;
$("div").text(n + (n <= 1 ? " is" : " are") + " checked!");
}
countChecked();
$(":checkbox").click(countChecked);
</script>
高于“$(”input:checked“)”“返回已检查项目的数组...您可以检查此数组的”长度“是否为&gt; 0
答案 3 :(得分:0)
点击代码并输入提交按钮:
$(":input").bind("click keypress", function(evt) {
var keyCode = evt.which || evt.keyCode;
var sender = evt.target;
if (keyCode == 13 || sender.type == "submit") {
evt.preventDefault();
// add your validations
}
// and submit the form
}
答案 4 :(得分:-1)
var atleast = 1;
function validate() {
debugger;
var CHK = document.getElementById("<%=chk1");
var checkbox = document.getElementsByTagName("input");
var counter = 0;
for (var i = 0; i < checkbox.length; i++) {
if (checkbox[i].checked) {
counter++;
}
}
if (atleast > counter) {
alert("Please select atleast " + atleast + " employee ");
return false;
}
return true;
}
<button type="submit" name="Initiate" value="Initiate" on click="return validate()" id=" initiate"></button>