HTML
<form action="/users/add" onsubmit="return test();" id="UserForm" method="post" accept-charset="utf-8">
<input type="text" maxlength="255" value="" id="UserName" class="form-error" >
</form
的Javascript
function test() {
var inputs = $('input:not([inputname])');
jQuery.each(inputs, function() {
if (this.value == '') {
$(this).next().removeClass('displayNone');
return false;
}
});
}
如果我选择下面的单个输入值,它对我来说很好。它将避免提交表格。
function test() {
var value = $('#UserName').val();
if (value == '') {
$('#UserName').next().removeClass('displayNone');
return false;
}
}
如何在使用jQuery.each函数时避免表单提交?
答案 0 :(得分:0)
在您的第一个示例中,test()
不会返回false。
test()
函数中没有return语句。
唯一的return语句是传递给each
的匿名函数。
大概你应该做这样的事情:
function test() {
var inputs = $('input:not([inputname])');
var return_value = true;
jQuery.each(inputs, function() {
if (this.value == '') {
$(this).next().removeClass('displayNone');
return_value = false;
}
});
return return_Value;
}
答案 1 :(得分:0)
我认为您应该使用each()
而不是$.each()
,因为inputs
是一个jquery集合而不是常规数组。
要阻止表单提交,您可以执行此操作而不是内联代码:
$('form').submit(function(e){
if (!test()) {
e.preventDefault(); // If test fails don't submit
}
});