2011-11-15 42 views
6

這是我的document.ready代碼:傳入一個值一個jQuery UI對話框與功能

$(document).ready(function() { 
    $("#dialogbox").dialog({ 
     open: function(event, ui) {$("a.ui-dialog-titlebar-close").remove();}, 
     bgiframe: true,autoOpen: false,closeOnEscape: false,draggable: false, 
     show: "drop",hide: "drop",zIndex: 10000,modal: true, 
     buttons: {'Ok': function() {$(this).dialog("close");processEmp();}} 
    }); 
}); 

我有以下的javascript代碼,需要一個參數:

function test(pEmp) 
{ 
    var a = pEmp.value); 

    $('#dialogbox').dialog('open'); 
} 

我的問題是基於我傳遞給我的測試函數的值,該函數依次調用我的jQuery UI對話框('#dialogbox'),當用戶按下對話框中的「確定」按鈕時,我需要以某種方式(這是我不知道該怎麼做),將保存我的pEmp.value的變量「a」傳遞給我的另一個函數processEmp(a?),它我已附加到我的「確定」按鈕。

希望有人可以幫助,因爲我基本上需要這個值,當用戶確認對話框。

謝謝。

回答

6

你可以打開它之前將自定義選項對話框:

$(function() { 
    $("#dialog").dialog({ 
      open: function (event, ui) { $("a.ui-dialog-titlebar-close").remove(); }, 
      bgiframe: true, 
      autoOpen: false, 
      closeOnEscape: false, 
      draggable: false, 
      show: "drop", 
      hide: "drop", 
      zIndex: 10000, 
      modal: true, 
      buttons: { 'Ok': function() { 
       $(this).dialog("close"); 
       processEmp($(this).data("pEmpValue")); 
      } 
      } 
    }); 
}); 

function processEmp(a) { 
    alert(a); 
} 

function test(pEmp) { 
    $("#dialog").data("pEmpValue", pEmp.value).dialog("open"); 
} 

或者哪怕是最簡單的解決方法是在窗口的範圍申報a變量:

var a = null; 

$(function() { 
    $("#dialog").dialog({ 
      open: function (event, ui) { $("a.ui-dialog-titlebar-close").remove(); }, 
      bgiframe: true, 
      autoOpen: false, 
      closeOnEscape: false, 
      draggable: false, 
      show: "drop", 
      hide: "drop", 
      zIndex: 10000, 
      modal: true, 
      buttons: { 'Ok': function() { 
       $(this).dialog("close"); 
       processEmp(a); 
      } 
      } 
    }); 
}); 

function processEmp(a) { 
    alert(a); 
} 

function test(pEmp) { 
    a = pEmp.value; 
    $("#dialog").dialog("open"); 
} 
+1

這看起來像不受支持的行爲,我不願意依賴它。文檔說選項方法是用來傳遞一個'對話框選項',我認爲它是指定義的選項之一。 – BNL

+0

@BNL,你有一點。在這個問題建議使用.data()方法,而不是自定義選項:http://forum.jquery.com/topic/using-custom-options-in-jquery-ui-dialog –

4

您可以通過爲'close'添加事件處理程序來實現此目的。事情是這樣的:

$("#dialogbox").bind("dialogclose", function(event, ui) { processEmp(a); }); 
+0

它也可以通過'close'在原始選項中指定(就像OP綁定的'open'一樣)。 – BNL

+0

欣賞你的幫助@德米特里,但我不知道我是如何將它與上面的代碼掛鉤的。我是否仍然在對話框中保留「確定」按鈕? – tonyf

+0

是的,你應該保持'OK'處理程序關閉對話框。當對話框關閉'dialogclose'事件會觸發。 –

相關問題