2012-03-07 4 views
0

HTML을양식이 거짓

<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 

자바 스크립트를

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

죄송합니다, 그것은 작동하지 않습니다 .. –

0

난 당신이 그에게 inputs부터 JQuery와 수집이 아닌 일반 배열을 each() 대신 $.each()를 사용한다고 생각합니다.
는 대신 인라인 코드로이 작업을 수행 할 수 제출에서 양식을 방지하기위한 방법은 다음과 같습니다

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