即使在onsubmit函数之后提交的表单也返回false

时间:2012-03-07 11:20:50

标签: jquery html jquery-selectors

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函数时避免表单提交?

2 个答案:

答案 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
    }
});
相关问题