2012-03-14 9 views
2

jQueryを使用して検証された後、Ajax経由でphpファイルに送信されるHTMLフォームが私のサイトにあります。ここでは、フォームの開始タグです:HTMLフォームアクション - "Order of Operation"

<form action="#" method="post"> 

私は形actionでpath_to_process_file.phpを置くことを考えていた(下図のように)彼らは彼らのブラウザでJavaScriptを無効にしている場合、彼らはまだ記入することができるようになりますようにフォームを提出してください。

<form action="../path_to_process_file.php" method="post"> 

私の質問

  • はJavaScriptが有効になっているときにフォームを送信する際、どのようなファイルの内容の業務の順序 "が含まれている必要がありますか?
  • まず、PHPのアクションパスを使用しますか?それとも、JavaScriptを使って最初に提出しようとしますか?

**アップデート: 私のJSは、Ajax経由で送信するために使用されます。

$(document).bind("pageinit", function(event, data) { 
    $("#rackback-quote-request-form").validate({ 
     // Custom validation messages 
     messages: { quote_name: "Please enter your full name."}, 
     errorElement: "p", 
     submitHandler: function(form){ 

      //Get the data from the form fields and format correctly 
      var product = $("#rackback-quote-request-form #product").val(); 


      var data = 'product=' + product; 
      $.ajax({ 
       type: "POST", 
       url: "../php/QR-rackback.php", 
       data: data, 
       success: function(data) { 
         $("#rackback-quote-request-wrapper").hide(); 
         $("#rackback-quote-request-success").append("<center><h3>Thanks! Your quote request has been sent.</h3></center>"); 
        }, 
       error: function(){ 
        alert("Javascript error, please try again"); 
       } 
      }); 
      return false; 
     } 
    }); 
}); 

はどこevent.preventDefault();?**

+0

'function(e){e.preventDefault(); } '一般的なPOSTを停止する。 JavaScriptが利用可能であれば、あなたはアクションをコントロールすることができます。 – kurttheviking

+0

JQuery(私はMooToolsを使用しています)を少し知っていますが、スクリプトの冒頭でevent.preventDefault()を実行する必要があります。 MooToolsの場合、そのメソッドはイベントのデフォルトアクションを防ぎ、決して次のアクションを妨げません。 –

答えて

4

あなたのJSは送信イベントに添付する必要があります。その場合、次のようにして自然に何をするのを防ぐことができます:

$('#form_id').submit(function(event) { 
    event.preventDefault(); 
    // use jQuery's ajax() method here to do what you want 
}); 
+0

既に 'submit'イベントにフックされている場合、この答えが示すように' event.preventDefault() 'を使用しない限り、ブラウザは両方を実行します(jsを実行し、次に正常に送信します)。 – bfavaretto

+0

2行目に注意しましたか? event.preventDefault()を追加すると、元のHTMLアクションを抑制します。 – Steve

+0

申し訳ありませんが、私は初めてそれを逃しました...私は上に自分のコードを更新しました。私は 'event.preventDefault();'をどこに置くのですか? – adamdehaven

2

JavaScriptが最初に実行されるかけることになり、そしてそれを、あなたは、フォームを送信するのでは、通常の(HTMLの道を)を抑圧する可能性があります。

あり、使用するフレームワークに依存し、これを行うには多くの方法がありますが、シンプルな無地で次の手順を実行することができたJavaScript:

  • は、フォームに「をonSubmit」イベントを接続します。
  • フォームの「通常の提出」(HTML形式)を控えたい場合は、単にを返します。を返します。
+0

通常のHTMLアクションをどのように抑制しますか?言い換えれば、Javascriptを使用して送信するとどうすればいいですか? – adamdehaven

+0

私は以下の答えで示唆したように、event.preventDefault()のようなものを通してJSの通常のHTMLアクションを抑制します。 – Steve