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

edw*_*yte 11 forms checkbox jquery 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;
});
Run Code Online (Sandbox Code Playgroud)

Jos*_*osh 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;
});
Run Code Online (Sandbox Code Playgroud)

此外,使用您的方法,一个小的改变应该使这工作

$("#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;
});
Run Code Online (Sandbox Code Playgroud)

我想你可能只是错过了$()周围this