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