2012-03-08 31 views
0

我有一個通過Ajax提交的表單,該表單目前可以完美工作。我嘗試添加一個確認選項,允許/防止阿賈克斯提交通過添加以下各行:Ajax表單提交和Javascript確認錯誤

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

    if(answer) { ... } 

下面是我的全部功能,其中,因爲你可以看到點擊提交按鈕,火災。當用戶在對話框中選擇好時發生錯誤。整個頁面被刷新,並且任何單個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 2012-03-08 22:09:50

+0

爲什麼不使用jquery ui對話框來顯示確認。 http://jqueryui.com/demos/dialog/ – 2012-03-08 22:10:07

+0

@蠍子王子,他會包括另一個完整的JavaScript庫,假設他沒有。不包括,如果沒有真正的理由;)確認框將做得很好 – 2012-03-08 22:13:57

回答

2

你在做return answer。這在這裏沒有任何意義。

它會停止JavaScript函數,並返回布爾值。刪除此行,和你設置

此外,添加這使得如果確認框是假的你提交不fireing;)

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

你是對的先生。非常感謝。像魅力一樣工作! – Andrew 2012-03-09 16:18:05

0

不要使用此:

<input type="submit"> 

使用這個:

<input type="button"> 

提交按鈕自動提交表單。常規按鈕什麼也不做。你可以用它來聽取點擊,然後提交你的表單,或不。

+0

不正確。已經有一個返回錯誤 – 2012-03-08 22:10:19

+1

更不用說如果是這種情況,那麼你可以重寫'submit'功能。 – prodigitalson 2012-03-08 22:13:17

+0

確切地說,返回false;) – 2012-03-08 22:14:49