2012-03-08 18 views
0

私はフォームをAjax経由で送信しています。 Ajaxフォーム提出とJavascriptの確認エラー

var answer = confirm('Submit now?'); 
    return answer // answer is a boolean 

    if(answer) { ... } 

は以下は、送信ボタンをクリックの上、火を見ることができるように、私の完全な機能、である:私は/許可以下の行を追加してAjaxの提出を防ぐために、確認オプションを追加しようとしました。このエラーは、ユーザーがダイアログでOKを選択したときに発生します。ページ全体がリフレッシュされ、1つのAjax警告がブランク画面の上部に返されます。通常の場合、この確認コードがなければ、フォームの下部にあるdiv#resultタグにエラーメッセージが表示されます。

$("#submitbtn").click(function() { 

     var answer = confirm('Submit now?'); 
     return answer // answer is a boolean 

     if(answer) { 

      $('#result').html('<img id="loading" src="images/loading.gif" />').fadeIn(); 
      var input_data = $('#create_po').serialize(); 
      $.ajax({ 
       type: "POST", 
       url: "<?php echo "http://" . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; ?>", 
       data: input_data, 
       success: function(msg){ 
        $('#loading').remove(); 
        $('<div>').html(msg).appendTo('div#result').hide().fadeIn('slow'); 
       } 
      }); 
      return false; 

     } 

    }); 

画面を更新しない確認ダイアログを実装するにはどうすればよいですか?どんな提案も大歓迎です。ありがとう!

+0

「返信」の場合、この行の後にあるものは実行されません。答えを返さないでください。 – dievardump

+0

なぜjquery UIダイアログを使って確認を表示しないのですか? http://jqueryui.com/demos/dialog/ –

+0

@ Scorpion-Princeには、彼が持っていない別の完全なjavascriptライブラリが含まれています。本当に良い理由がない場合は含めないでください;)確認ボックスはうまくいくでしょう。 –

答えて

2

return answerを実行しています。ここでは意味をなさない

JavaScriptの機能が停止し、ブール値が返されます。この行を削除して、あなたはまた

を設定している、確認ボックスがfalseの場合、あなたはfireingない提出するためにこれを追加します。)

if (answer){ 
    // your ajax call 
} 
else { 
    return false; 
} 
+0

あなたは正しいです。非常にありがとう。チャームのように働いた! – Andrew

0

これは使用しないでください:

<input type="submit"> 

をこれを使用してください:

送信ボタンが自動的にフォームを送信します。通常のボタンは何もしません。それを使用してクリックを聞いてからフォームを送信するかどうかを選択できます。

+0

本当ではありません。既に偽が返っています –

+1

そうであれば、 'submit'機能をオーバーライドできます。 – prodigitalson

+0

正確にはfalseを返します;) –