2011-08-10 7 views
0

提出機能の中に「if」というコードを入れた場合、そのメソッドは(明らかに)常にtrueを返してフォームを提出するのはなぜですか?jqueryは奇妙な振る舞いを提出する

var test = "test"; 

    $("#contact_form").submit(function(){ 

      if (test == "random"){ 

      } 



      return false; 

    }); 

に私はそれが常に提出任意のコードの有無にかかわらず、このような場合は、ANを入れたときに。

+0

return falseの代わりにevent.preventDefault()を試行します。 –

+0

'false'を返すことは' e.preventDefault() 'と' e.stopPropagation() 'の両方を呼び出すのと同じです。他の何かが間違っています。 – sje397

+0

@ sje397フォームは、 'return'を打つ前にコードの実行を停止させる' if'ステートメントにエラーがある場合に送信します。したがって、他の関数やコードの前にsubmitを停止することは、 'return false'に優先します。 –

答えて

1
$("#contact_form").submit(function(e){ 
    e.preventDefault(); 

     if (test === "random"){ 

     } 
}); 

コードを実行する前に、デフォルトのアクションを停止します。さらに、===を追加します。それはタイプに対してもチェックします。

0

ifブロックの中に書くコードによって異なります。誤ってreturn trueを書いたり、jsエラーがあれば、フォームを送信します。フォームを送信するときにajax呼び出しを行う場合は、送信ハンドラでデフォルトのフォーム送信を禁止します。これはfalseを返すほど良いです。

$("#contact_form").submit(function(e){ 
    e.preventDefault(); 
});