Jquery UI对话框按钮文本无效

时间:2011-03-07 22:11:46

标签: jquery user-interface button dialog

我正在创建一个模态JQuery UI对话框并将结果存储在$ dialog变量中。按钮会根据选择的操作而改变,因此我使用如下函数调用设置按钮:

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

这会显示两个按钮,其中包含文本“0”和“1”,而不是“确定”和“取消”。此外,点击功能似乎不起作用。

我已经多次查看过了,语法看起来是正确的。我做错了什么?

7 个答案:

答案 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设置但仍然无效)。我看了这个问题:

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或类或其他任何内容,请删除“打开”并仅使用按钮的对象语法。或者,只需使用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" );
        }
    }
});
相关问题