2012-01-25 9 views
3

条件が真である場合にのみ送信したいフォームがあります。しかし、私はプログラム的にしたい場合もあります。JavaScriptでフォームをプログラムで送信する前に条件をチェックする方法

手動でフォームを送信する際作品を以下に示します。

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

をプログラム的にフォームを送信するために作品を続いていますが、フォームを送信するための条件をチェックしません。

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

は、だから私はプログラム的にフォームを送信する前の状態をチェックするが、私は次のコードを使用する場合、それも $('form').submit();によって行われていたフォームを送信しないために次の操作を実行しようとしました

checkForTheCondition()trueまたはfalseのいずれかを返します。

フォームを送信する前に条件を確認する手動フォーム送信のように、プログラムでフォームを送信することはできますか?

答えて

3

あなたは、このようにそれを行うことができるはず:

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

編集:私は今、あなたの問題を理解すると思います。

$('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').submit();と送信ボタンコールcheckForTheCondition()のクリックを行います

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

私は、最も簡単な解決策はこれだろう実現。楽しい!

+0

彼はできません。途中で 'checkForTheCondition'を通過しないで送信する送信ボタンがあります。 – gdoron

+0

私は彼がコードから送信イベントをトリガーしたいと思うし、checkForTheCondition()をテストしたいと思う。このコードは検証を行い、イベントを発生させます。 – JPuge

+0

しかし、彼はまだ送信ボタンを持っています... – gdoron

1

条件にtrue/falseが返された場合は、コードが正常に動作するはずです。状態の失敗時にメッセージを警告する場合は、これを試すことができます。

$(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:コールバック関数には入っていません。私はログをチェックした。しかし、フォームのsubmitボタンをクリックすると、ログの '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:コールバック関数が機能しないようになったので、今すぐ試してみましょう。私はほとんどすべてのjavascriptを知っています。 – skip

0
if ($("#formID").submit()){ 
    alert("Handler for .submit() called.");  
}; 
関連する問題