除非选中复选框,否则Jquery停止表单提交

时间:2011-01-25 16:10:46

标签: jquery forms checkbox submit

我有这段代码,但它似乎没有返回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;
});

5 个答案:

答案 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>