2011-03-10 35 views
4

我需要为一个jQuery对话框的按钮上的文字提供本地化,但是JQuery的对话框的通常使用的按钮文字的关键:JQuery的对话框 - 不使用SET按钮文本主要

$(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 
}); 

谢谢。

回答

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.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); 

所以它看起来并不像它。

现在你可以我想添加一个修改按钮后显示回调。这看起来很骇人听闻 - 我会建议你现在这样做。

+0

感谢源例如 – cweston 2011-03-10 21:05:59

+0

这源是1.8.5不同,超越:https://github.com/jquery/jquery-ui/blob/1.8.5/ui/jquery.ui.dialog.js#L360 - 它现在可以采取一个数组''{点击:处理程序,文本: (请参阅我的回答) – gnarf 2011-03-11 00:32:53

0

我可以告诉你如何在初始化完成后进行事后修改,但是在构造函数中进行修改需要对jQuery UI库进行根本改动,这当然是可行的,因为它是开源的。该功能目前尚未提供给您。

相反,我建议将执行你的对话框初始化后渴望的变化如下:

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

见工作小提琴here

我可以问为什么构造函数的格式对你什么都很重要吗?我很难想象用例的具体情况。你建立你的buttons映射的方式似乎很好。

+0

感谢您的建议和示例,但设置此后的初始化看起来有点僵硬,并且容易出现错误(即突然出现一个关键字在没有匹配的帖子设置器选择器被更新的情况下被更新)。我不是我目前解决方案的忠实粉丝的原因是从本地化例程中返回一个重复的罕见机会。 – cweston 2011-03-10 20:55:04