2011-03-07 85 views
7

我正在创建一个模态JQuery UI对话框并将结果存储在$ dialog变量中。的按钮的变化取决于在其上选择操作,所以使用一个函数调用这样设置按钮:Jquery UI对话框按钮文本不起作用

$dialog.dialog("option", "buttons", [ 
    { 
     text: "Ok", 
     click: function() { close_project(); } 
    }, 
    { 
     text: "Cancel", 
     click: function() { ($this).dialog("close"); } 
    } 
]); 

这显示与在其中的文本“0”和“1”而不是“好”的两个按钮和'取消'。此外,点击功能似乎没有工作。

我已经过了很多次,语法看起来正确。我究竟做错了什么?

+1

你的语法确实出现了是正确的。是否有其他代码修改对话框? – 2011-03-07 22:18:08

回答

6

jQuery用户界面帮助这说你正在使用的方法是模态已经初始化 - http://jqueryui.com/demos/dialog/#option-buttons这是这种情况?

如果没有,试试这个,然后尝试它是如何为您的解决方案不同,或者适合:

$dialog.dialog({ buttons: [ 
    { 
     text: "Ok", 
     click: function() { close_project(); } 
    }, 
    { 
     text: "Cancel", 
     click: function() { $(this).dialog("close"); } 
    } 
]}); 
3

您可以尝试的语法是这样的:

$dialog.dialog("option", "buttons", { 
     "Ok": function() { close_project(); }, 
     "Cancel": function() { $(this).dialog("close"); } 
    } 
); 
0

“文本”选项是一个布尔标志,用于指定是否显示标签中的文本。也许你应该尝试改变按钮的.html()

$("#Button1").html("Ok"); 
1

我有相同的“0 1”按钮标签问题。我“需要”按钮的数组语法,而不是对象语法,因为我想设置按钮ID(我的代码看起来像rdamborsky的ID设置,但仍然无法使用)。我看了看这个问题:

jQuery UI Dialog Button Icons

而在这个问题修改的尝试代码。对于你的具体例子:

$dialog.dialog({ buttons: { 
     "Ok": function() { close_project(); }, 
     "Cancel": function() { $(this).dialog("close"); } 
    }, 
    open: function() { 
     $('.ui-dialog-buttonpane').find('button:contains("Cancel")').attr("id", "cancel_button"); 
     $('.ui-dialog-buttonpane').find('button:contains("Ok")').attr("id", "ok_button"); 
}}); 

顺便说一句,当我认为你的意思是$(this)在你的代码中时,我注意到($ this)。这可能会造成一次点击。其他点击可能会有问题(但只有在某种程度上在ajax请求中):如果您在IE 7或8中,稍作修改以规避IE(ajax)范围问题。在$ dialog.dialog代码之前,执行“window.close_project = close_project;”然后调用“window.close_project();”在点击功能中。如果您不需要更改id或类或其他任何内容,请删除“open”,然后使用按钮的对象语法。或者,只需使用amurra的答案。

1

这似乎是制定者不工作。我所做的,而不是与一次设置所有选项的对话框完全初始化:

<script type="text/javascript"> 
    $("#DiscardDialog").dialog(
    { 
     autoOpen: false, 
     title: "Discard", 
     buttons: 
     { 
      "Yes": function() 
      { 
       window.location = "@Url.Action("Discard", new { ID = this.Model.ID })"; 
      }, 
      "No": function() 
      { 
       $(this).dialog("close"); 
      } 
     } 
    }); 
</script> 
+1

+1 for autoOpen:false。没有看到这是其他的例子。 – ter24 2014-03-13 16:17:15

1

这工作太:

buttons: { 
     'Do some action': function() { 
      //a button called 'Do some action' is created 
     }, 
     Close: function() { 
      //a button called 'Close' is created 
      $(this).dialog('close'); 
     } 
    }, 
    open: function() { 
     //event fires when dialog opens 
    }, 
    close: function() { 
     //event fires when dialog closes 
    } 
0

这为我工作

$("#dialog-form").dialog 
(
{ 
    autoOpen: false, 
     height: 300, 
    width: 350, 
    resizable: false, 
    autoOpen: false, 
    modal: true, 
    buttons: { 
     'Guardar' : function() 
     { 
      $("#dialog-form").dialog("close"); 
      $(this).html("Guardar"); 
     }, 
     Cancel: function() 
     { 
      $(this).html("Cancelar"); 
      $("#dialog-form").dialog("close"); 
     } 
    } 
});