我正在创建一个模态JQuery UI对话框并将结果存储在$ dialog变量中。按钮会根据选择的操作而改变,因此我使用如下函数调用设置按钮:
$dialog.dialog( "option", "buttons", [
{
text: "Ok",
click: function() { close_project(); }
},
{
text: "Cancel",
click: function() { ($this).dialog("close"); }
}
]);
这会显示两个按钮,其中包含文本“0”和“1”,而不是“确定”和“取消”。此外,点击功能似乎不起作用。
我已经多次查看过了,语法看起来是正确的。我做错了什么?
答案 0 :(得分:6)
jQuery UI帮助说明你正在使用的方法已经初始化了模态 - http://jqueryui.com/demos/dialog/#option-buttons是这样的吗?
如果没有,试试这个,然后试验它与你的解决方案有什么不同或适合:
$dialog.dialog({ buttons: [
{
text: "Ok",
click: function() { close_project(); }
},
{
text: "Cancel",
click: function() { $(this).dialog("close"); }
}
]});
答案 1 :(得分:3)
您可以这样尝试语法:
$dialog.dialog( "option", "buttons", {
"Ok": function() { close_project(); },
"Cancel": function() { $(this).dialog("close"); }
}
);
答案 2 :(得分:1)
我有同样的“0 1”按钮标签问题。我“需要”按钮的数组语法而不是对象语法因为我想设置按钮id(我的代码看起来像rdamborsky的ids设置但仍然无效)。我看了这个问题:
并修改了问题中的尝试代码。对于您的具体示例:
$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或类或其他任何内容,请删除“打开”并仅使用按钮的对象语法。或者,只需使用amurra的答案。
答案 3 :(得分: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>
答案 4 :(得分: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
}
答案 5 :(得分:0)
“text”选项是一个布尔标志,用于指定是否应显示标签中的文本。也许您应该尝试更改按钮的.html(),例如
$("#Button1").html("Ok");
答案 6 :(得分: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" );
}
}
});