2012-03-07 81 views
0

的Html形式返回false

<form action="https://stackoverflow.com/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

在你的第一个例子中,test()不返回false。

test()函数中没有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; 

} 
+0

对不起,它不会工作.. – 2012-03-07 11:46:30

0

,我认为你应该使用each()代替$.each()因为inputs其一个jQuery集合,而不是规则的阵列。
为了防止从形式提交,你可以做的,而不是内嵌代码如下:

$('form').submit(function(e){ 
    if (!test()) { 
     e.preventDefault(); // If test fails don't submit 
    } 
});