如何在jQuery UI对话框中设置自定义按钮(文本)?

时间:2010-08-20 11:59:07

标签: jquery-ui button jquery-ui-dialog

我确实可以使用Close选项轻松将closeText按钮文本设置为变量

$("#dialog").dialog({
    autoOpen: false,
    modal: true,
    closeText: btnCancel, // <-----
    overlay: {
        backgroundColor: '#000',
        opacity: 0.5
    },
    buttons: {
        Close: function() {
            $(this).dialog('close');
        }
    }
});

自定义名称怎么样?

这不起作用:(

var btnResetMapping = 'Reset Mapping';

$("#dialog").dialog({
    autoOpen: false,
    modal: true,
    closeText: btnCancel,
    overlay: {
        backgroundColor: '#000',
        opacity: 0.5
    },
    buttons: {
        Close: function() {
            $(this).dialog('close');
        },
        btnResetMapping: function() {  // <-----
            // logic here
        },
    }
});

这可以看作是一个奇怪的问题,但我的变量在代码中是:

var btnResetMapping = '<%= Resources.PARbuttons.btnResetMapping %>';
从全局资源文件中正确加载

,并使用正确的应用本地化句子。

使用时可以正常工作:

$("#dialog").dialog({
    autoOpen: false,
    modal: true,
    closeText: btnCancel,
    overlay: {
        backgroundColor: '#000',
        opacity: 0.5
    },
    buttons: {
        Close: function() {
            $(this).dialog('close');
        },
        '<%= Resources.PARbuttons.btnResetMapping %>': function() {  // <-----
            // logic here
        },
    }
});

但我正在重构这个将javascript文件放在它自己的位置(单独的文件),我想,不仅这样做(从Javascript单独的HTML - 这是一个始终从加载的业务Web应用程序INTRANET,从不使用互联网btw)但要了解它。

谢谢。

1 个答案:

答案 0 :(得分:4)

您可以使用括号表示法,如下所示:

var myButtons = { Close: function() { $(this).dialog('close'); }  };
myButtons[btnResetMapping] = function() { ...logic here... };
$("#dialog").dialog({
    autoOpen: false,
    modal: true,
    closeText: btnCancel,
    overlay: {
        backgroundColor: '#000',
        opacity: 0.5
    },
    buttons: myButtons
});

在此代码运行之前确保btnResetMapping已定义为,并且您已全部设置完毕:)