我需要为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
});
感谢。
答案 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
映射的方式似乎没问题。