JQuery对话框 - 不使用Key设置按钮文本

时间:2011-03-10 19:20:28

标签: javascript jquery jquery-ui jquery-ui-dialog

我需要为JQuery对话框的按钮文本提供本地化,但是JQuery对话框通常使用按钮文本的键:

$(DialogDiv).dialog({
    bgiframe: true,
    resizable: false,
    buttons: { Save : saveCallback, Cancel : cancelCallback}
});

有没有办法在不使用密钥作为文本值的情况下单独指定文本?目前我正在使用它,但我不喜欢使用本地化的值作为键:

var buttonCallbacks = {};       
buttonCallbacks[com.i18n.getText("Save")] = function() {};
buttonCallbacks[com.i18n.getText("Cancel")] = function() {};

$(DialogDiv).dialog({
    bgiframe: true,
    resizable: false,
    buttons: buttonCallbacks 
});

感谢。

3 个答案:

答案 0 :(得分:6)

如果您查看对话框的button options,您会注意到列出的第二种格式接受了一系列对象:

$(DialogDiv).dialog({
    bgiframe: true,
    resizable: false,
    buttons: [ { 
        text: com.i18n.getText("Save"),
        click: saveCallback
      }, {
        text: com.i18n.getText("Cancel"),
        click: cancelCallback
      }
    ]
});

答案 1 :(得分:1)

刚刚来源(1.8):

var button = $('<button type="button"></button>')
    .text(name) // name is object key from each
    .click(function() { fn.apply(self.element[0], arguments); })
    .appendTo(uiDialogButtonPane);

所以它看起来不像。

现在我可以假设添加一个修改按钮的After show回调。这看起来非常苛刻 - 我建议你现在这样做。

答案 2 :(得分:0)

我可以告诉你如何在初始化完成后事后进行更改,但是在构造函数中执行此操作需要对jQuery UI库进行基本更改,当然,这是非常可行的,因为它是开源的。目前尚未向您提供此功能。

相反,我建议以下内容将在对话框初始化后执行您想要的更改:

$('.myDialogSelector').parent()
    .find('span.ui-button-text:contains("OriginalNameFromKey")')
    .html("New Button Text");

查看工作小提琴here

我可以询问为什么构造函数的格式对你来说任何重要吗?我很难想象用例的具体细节。您构建buttons映射的方式似乎没问题。