2011-11-15 43 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'事件会触发。 –

相关问题