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

标签 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;
});

最佳答案

您不需要执行循环来确定是否选中复选框。 :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 周围的 $()

关于Jquery 停止表单提交,除非选中复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4795872/

相关文章:

php - PHP + Ajax innerHTML 后可点击的 JS 函数不起作用

forms - 以编程方式发布表单并没有执行我的浏览器正在执行的操作。为什么?

javascript - Rails 复选框隐藏字段类

php - 为用户存储复选框值和输出结果

php - 在 codeigniter 的数据库中设置值时如何将复选框显示为已选中

javascript - jquery:将参数和初始函数传递给jquery原型(prototype)

jquery - 有没有办法强制 jQuery UI 菜单子(monad)菜单始终向上而不是向下定位?

javascript - 如何将 jQuery Deferred 对象转换为 ES6 Promise

隐藏 div 的 jQuery 计数器

php - 自定义 Magento 订单字段和 Magento 数据库