2012-06-28 53 views
4

我使用的jquery-ui dialog box。 我的問題是單擊x按鈕關閉對話框時,我還需要執行cancel()函數。jQuery的用戶界面對話框,按X鍵功能

我該怎麼做?

var content = 
{ 
    autoOpen : false, 
    modal  : true, 
    width  : 350, 
    minHeight : 50, 
    height  : 350, 
    position : "center", 
    resizable : false, 
    draggable : false, 
    close  : function() {$(".privacy_modal").prop("checked", false);}, 
    buttons: 
    { 
     "Cancel": function cancel() 
     { 
      $(".privacy_modal").prop("checked", false); $(this).dialog("close"); 
     }, 
     "Accept": function accept() 
     { 
      $(".privacy_modal").prop("checked", true); $(this).dialog("close"); 
     } 
    } 
}; 

TEST

注:使用接近,因爲它覆蓋的功能並沒有解決我的問題,當我點擊接受按鈕

+0

你好,SUP男人,你的意思是當用戶點擊'X'您想取消調用的函數? –

+0

功能取消(){警報(「測試」);}, – newbie

+0

酷,是的,看到我的帖子下面演示,希望它可以幫助'beforeClose'是用於該用途非常好的API,它可能會來方便,':)' –

回答

7

你可以使用第三方變量(bAccepts哪個是假的默認情況下)和第三方方法。

當用戶接受:

  • 設置bAccepts爲True

當用戶取消:

  • 設置bAccepts爲False

當OnClose中燒,通話方法doClose()執行以下操作:

  • 如果bAccepts爲True =>接受
  • 否則=>取消

下面是一些非測試僞代碼。見working code

var bAccepts = false; 
var content = { 
        autoOpen : false, 
        modal  : true, 
        width  : 350, 
        minHeight : 50, 
        height  : 350, 
        position : "center", 
        resizable : false, 
        draggable : false, 
        close  : function() { if (bAccepts) {...} else {...} }, 
        buttons: { 
         "Cancel": function cancel() { bAccepts = false; $(this).dialog("close");}, 
         "Accept": function accept() { bAccepts = true; $(this).dialog("close");} 
      } 
}; 
+2

你好bruv,只是一個想法,我們可以使用'beforeClose'像下面演示:http://docs.jquery.com/UI/Dialog#event-beforeClose可能就夠了。 cheerios':)' –

+0

這不起作用... – newbie

+0

@newbie我更新了與工作代碼的答案。看到這裏的工作演示:http://jsfiddle.net/6deP4/ – jonjbar

3

工作演示http://jsfiddle.net/Ea6Hm/1/

您可以使用:http://docs.jquery.com/UI/Dialog#event-beforeClose

使用beforeClose,你可以打電話給你想要的對話框結束前調用任何功能。

希望這有助於

代碼

$(document).ready(function() { 
    $('#theLink').click(function() { 
     $("#forgot-dialog").dialog("open"); 
    }); 

    $("#forgot-dialog").dialog({ 
     modal: true, 
     autoOpen: false, 
     height: 255, 
     width: 300, 
     beforeClose: function() { 
      alert("Do whatever before Close"); 
     }, 
     buttons: { 
      "Retrieve": function() { 
       document.forms["forgotform"].submit(); 
      }, 
      Cancel: function() { 
       $(this).dialog("close"); 
      } 
     }, 
    }); 


});​ 
+0

如果用戶想要保留在當前頁面上,這將不起作用:如果不觸發beforeClose事件,您將無法關閉對話框。 – jonjbar

+0

Hiya @JohnRiche我認爲這將工作,因爲'beforeClose' ='這個事件觸發時,一個對話框試圖關閉。因此,BeforeClose事件將觸發他/他所調用的任何功能,任何OP可能能夠拋出更多的光但是演示應該很清楚,歡迎發表評論, –

+0

是的,在關閉對話框之前關閉和關閉時會被調用,但是當單擊「取消」按鈕並單擊X關閉按鈕時,OP想要執行相同的操作:此操作可以用第三方變量來實現,看我的答案。 – jonjbar

相關問題