2013-05-02 81 views
0

說,一個問題,我有以下鏈接:使用jQuery對話框

<a onclick="confirmDelete()" href="delete.do&xyz">Delete user</a> 

和下面是confirmDelete功能:

function confirmDelete() 
{ 
    if(!confirm("delete user?")) 
    { 
    return false; 
    } else 
    { 
    return true; 
    } 
} 

基本上當點擊鏈接時,它會檢查用戶是否選擇確定或取消,然後根據它執行。

問題:我在我的平臺上有數百個類似的鏈接,我們決定將所有的javascript警報轉到jquery對話框。

我用下面以某種方式覆蓋警報:

$(function(){ 

window.confirm = function(message) { 
      $('#overrideAlert').text(message).dialog({ 
       resizable: false, 
       modal: true, 
       buttons: { 
       "Ok": function() { 
       $(this).dialog("close"); 

       }, 
       Cancel: function() { 
       $(this).dialog("close"); 

       } 
      } 
     }); 
    }; 
}); 

它工作正常,警報出來作爲一個jQuery的對話,但問題是,因爲事實上這是不可能從返回的東西像對話框處理程序,我不知道如何告訴我的按鈕在該領域,用戶選擇好或取消。

基本上我不知道如何將它們連接在一起。

請幫

回答

1

問題出在JavaScript異步性質。正如你使用jQuery。可以嘗試下面的方法。

$('a[onclick="confirmDelete()"]') 
     .attr('onclick','') 
     .click(function(){ 

     var anch = this, 
      message = "delete user?"; 

      $('#overrideAlert').text(message).dialog({ 
       resizable: false, 
       modal: true, 
       buttons: { 
       "Ok": function() { 
        $(this).dialog("close"); 
        alert("window.location=" + anch.href); 
       }, 
       Cancel: function() { 
       $(this).dialog("close"); 

       } 
      } 
     }); 

     return false ; 
}); 

我做的jsfiddle http://jsfiddle.net/wB389/

+0

謝謝你,這應該解決我的問題。 – ComeRun 2013-05-02 07:03:20

0

也許就像這樣:

"Ok": function() { 
window.location=deleteURL; 
$(this).dialog("close"); 
}, 

這可能是一個更復雜一點的是,由於您使用相對URL的,但你可以使用window.location.protocol +窗口獲取當前的URL。 location.port + window.location。 window.location.host + window.location.pathname

+0

對不起不顧deleteURL。那只是我錯誤地把它放在那裏的一個考驗。問題是當confirmdelete被觸發時,它不會等待對話框,並且它返回false,所以對話框在這裏變得毫無用處 – ComeRun 2013-05-02 06:37:21