2012-01-25 3 views
3

조건이 true 인 경우에만 제출할 폼이 있습니다. 그러나 프로그래밍 방식으로 원하는 경우도 있습니다. (가) 프로그래밍 양식을 제출 작품에 따라프로그래밍 방식으로 자바 스크립트에서 폼을 제출하기 전에 조건을 확인하는 방법

<input type="submit" value="submit" onclick="return checkForTheCondition();"/> 

하지만 양식을 제출하기위한 조건을 확인하지 않습니다 :

수동으로 양식을 제출할 때 작품에 따라.

$('form').submit(function() { 
    return checkForTheCondition(); 
}); 
:
$('form').submit(); 

그래서 나는 프로그래밍 양식을 제출하기 전에 상태를 확인하지만 난 다음 코드를 사용할 때조차 $('form').submit();에 의해 수행되고 있던 양식을 제출하지 않습니다에 대해 다음과 같은 작업을 수행하려

checkForTheCondition()true 또는 false을 반환합니다.

양식을 제출하기 전에 조건을 확인한 경우 수동 양식 제출과 마찬가지로 프로그래밍 방식으로 양식을 제출할 수 있습니까?

답변

3

당신은이 방법을 수행 할 수 있어야합니다.

$('form').submit(function() { ... });을 호출해도 이벤트가 트리거되지 않습니다. 이 함수는 콜백이 아닙니다! 대신 함수를 제출 이벤트에 바인드합니다. 그래서 당신이 호출 할 때 :

$('form').submit(function() { 
    return checkForTheCondition(); 
}); 

당신은 이벤트를 트리거하지 않습니다이 다소 onclick="return checkForTheCondition();"과 동일 return checkForTheCondition();를 결합하지만 양식이 제출 될 때마다 호출 될 것이며,뿐만 아니라 제출하면 버튼이 insted 클릭 함.

<input type="submit" value="submit"> 
<script> 
    $(document).ready(function() { 
     $('form').submit(function() { 
      return checkForTheCondition(); 
     }); 
    }); 
</script> 

그런 다음 당신은 그냥 $('form').submit();를 호출 할 수 있습니다 및 checkForTheCondition()은 때마다 호출됩니다

나는 이런 식으로 할 것이다. jQuery에 대해 더 자세히 읽고 here을 제출할 수 있습니다. 다시 행운

편집 :

내가 가장 쉬운 해결책이 될 것이라고 실현 :

<form method="post" action="somepage" onsubmit="return checkForTheCondition();"> 
    <!-- Inputs --> 
    <input type="submit" value="submit"> 
</form> 

이 제출하기 전에 제출 버튼을 호출 checkForTheCondition()$('form').submit(); 및 클릭을 할 것입니다. 즐겨!

+0

그는 할 수 없습니다. 제출하는 버튼이 있습니다. 그 과정에서'checkForTheCondition'을 통과하지 않습니다. – gdoron

+0

코드에서 submit 이벤트를 trigger하고 ​​checkForTheCondition() 테스트를 원한다고 생각합니다. 이 코드는 유효성 검사를 수행하고 이벤트를 발생시킵니다. – JPuge

+0

하지만 그는 아직 제출 버튼이 있습니다 ... – gdoron

1

조건부로 true/false를 반환하면 코드가 작동해야합니다. 상태가 실패했을 때 어떤 메시지라도 알려주고 싶다면 이것을 시도 할 수 있습니다.

if (checkForTheCondition()) { 
    $('form').submit(); 
} 

편집 : 내가 지금 당신의 문제를 이해 생각

$(function(){ 
    $('form').submit(function() { 
     if(!checkForTheCondition()){ 
      //alert message here 
      return false;//This will stop the form from being submitted. 
     } 
     return true; 
    }); 
}); 
+0

OP의 코드와 동일하지 않습니까? – hugomg

+0

예, 그렇습니다. 그러나 여기에서 OP는 그가 원한다면 메시지를 경고 할 수 있으며 코드를 실제로보고있는 것을 이해하기 쉽습니다. – ShankarSangoli

+0

@ShankarSangoli : 콜백 함수에 들어 가지 않습니다. 로그를 확인했습니다. 하지만 폼 제출 버튼을 클릭하면 로그에서'true' 또는'false'에서'checkForTheCondition()'의 결과를 볼 수 있습니다. – skip

0
$('#my_form_id').submit(function() { 
    var my_value = checkForTheCondition(); 
    if(my_value == "some returned value"){ 
    return true; 
    } else { 
    alert("error in your submission"); 
    return false; 
    } 
}); 
+3

나는'submit' 이벤트에 더 밀접하게 바인딩 할 것을 권한다. 제출 단추를 누르지 않고 양식을 제출할 수 있습니다. – cheeken

+0

@jpea : 귀하의 코드를 시도하고 로그를 점검했지만 어떤 이유로 콜백 기능을 사용하지 못합니다. 그런 다음 제출 버튼을 수동으로 클릭하면 조건을 확인한 후 양식을 제출합니다. 왜 그것이 콜백 함수에 들어 가지 않는지 이해할 수 없습니까? – skip

+0

@cheeken : 콜백 함수가 작동하지 않는 것처럼 지금 시도 할 것입니다. 나는 거의 모든 자바 스크립트를 안다. – skip

0
if ($("#formID").submit()){ 
    alert("Handler for .submit() called.");  
}; 
관련 문제