Javascript 如果未选中元素,则需要防止表单提交的帮助

Javascript 如果未选中元素,则需要防止表单提交的帮助,javascript,jquery,html,forms,Javascript,Jquery,Html,Forms,我写了一个小脚本,如果没有选择输入字段(复选框或单选框),该脚本将阻止表单提交。脚本仅针对具有属性“required”的输入字段。但是,由于我的表单因页面而异(取决于用户选择的链接),因此不需要所有选项 我包含jquery脚本的表单位于一个表单上,因为它是动态的 我已经写了下面的脚本来完成这项工作 $('#item_form').submit(function() { var ok = $('input[id*=\"required\"]').is(':checked

我写了一个小脚本,如果没有选择输入字段(复选框或单选框),该脚本将阻止表单提交。脚本仅针对具有属性“required”的输入字段。但是,由于我的表单因页面而异(取决于用户选择的链接),因此不需要所有选项

我包含jquery脚本的表单位于一个表单上,因为它是动态的

我已经写了下面的脚本来完成这项工作

  $('#item_form').submit(function() {
            var ok = $('input[id*=\"required\"]').is(':checked');
            $('#error').toggle(!ok);
            $('html, body').animate({scrollTop: 0,scrollLeft: 300}, 500);
            return ok;
        });
    });
但我所面临的挑战是,只有当有一个必需的属性时,它才能工作。我已经写了下面的代码,但它似乎不适合我。这是我写的

   $.fn.exists = function () {
        return this.length !== 0;
    }

        $('#item_form').submit(function() {
            var req = $('input[id*=\"required\"]');
            if(req.exists()){
            var ok =  req.is(':checked');
            $('#error').toggle(!ok);
            $('html, body').animate({scrollTop: 0,scrollLeft: 300}, 500);
            return ok;
            }
        });
    });

谁能帮我弄清楚这个吗?谢谢

不完全清楚您的验证要求是什么,但如果您试图针对
必需的属性
属性,您可以使用属性选择器'

例如,在单个复选框上:

<input type="checkbox" required/>
需要看到更多的html,并更好地解释您需要改进的地方


参见您可以尝试检查选择器
输入[id*=“required”]:not(:checked)
是否返回长度为“0”,如果选中了所有
required
,并且如果页面上没有
required
,则返回长度为
true

$('#item_form').submit(function() {
    var ok = $('input[id*=\"required\"]:not(:checked)').length == 0;
    $('#error').toggle(!ok);
    $('html, body').animate({scrollTop: 0,scrollLeft: 300}, 500);
    return ok;
});
简单的解决方案

$('#item_form').submit(function () {
   if ($(this).find('input.required').length > 0) {
       alert('oops, a field is required'); // this is where you'd put your loop to make sure each required field is filled
   } else {
       alert('form is good to go');
   }
});

请注意,一个页面上只能有一个ID实例,因此请使用class=“required”而不是ID=“required”。

$(“#item_form”).submit(函数(事件){event.preventDefault()将阻止其提交,否则,无论您返回什么,它都会提交。@MichaelC.Gates这不是真的,返回
false
也会阻止提交人将其收回。我知道我有类似的问题,但文档状态返回false也会起作用。