2012-03-07 91 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 
    } 
});