2011-09-05 50 views
1

我有一個簡單的形式繼續:如何使用jQuery的對話框劫持的形式,然後用提交

<form id="cancel" method="post" action="/Controller/Cancel"> 
    <input class="submitbtn" type="submit" value="Go"> 
    ... 

我使用jQuery與jQuery UI的對話框。我想要做的就是劫持表單的提交併顯示一個對話框。當用戶在對話框中點擊「是」時,表單繼續並進行正常頁面提交。如果他們點擊「否」,對話框就會取消。

我有這樣的代碼:

$(document).ready(function() { 

$("#dialog").dialog({ 
    resizable: false, 
    autoOpen: false, 
    modal: true, 
    buttons: { 
     "Yes": function() { 
      // Not sure what to do here 
      $(this).dialog("close"); 
     }, 
     "No": function() { 
      $(this).dialog("close"); 
     } 
    } 
}); 

$('#cancel').submit(function (event) { 
    event.preventDefault(); 
    $('#dialog').dialog('open'); 

}); 

}); 

我的問題是,如何獲得提交代碼返回真/假基於從對話框中響應客戶端。

任何幫助表示讚賞。

+1

我不會發布,作爲一個答案,但確實知道你可以做到這一點,而無需使用的jQuery JavaScript的' confirm()'函數,根據用戶在GUI中的輸入,它返回「true」還是「false」,所以你可以做'areYouSure = confirm(「你確定嗎?」);返回areYouSure;' –

回答

1

這裏的問題是,當你使用$('#cancel').submit()內「是「按鈕回調,再次觸發submit事件和event.preventDefault()停止從實際被提交。

速戰速決將只是實際提交表單之前解除綁定您提交的事件。 (演示:http://jsfiddle.net/WQjFj/6/

$("#dialog").dialog({ 
    resizable: false, 
    autoOpen: false, 
    modal: true, 
    buttons: { 
     "Yes": function() { 
      $('#cancel').unbind("submit").submit(); 
      $(this).dialog("close"); 
     }, 
     "No": function() { 
      $(this).dialog("close"); 
     } 
    } 
}); 

另一種解決方案可以在這個回答中找到:Using jquery ui dialog to confirm action for form submission

+0

謝謝。 jsfiddle上的演示非常有用。之前沒有看到該網站 - 將再次使用它! – Matt

+0

@Matt不客氣!很高興幫助。 –