2011-03-10 41 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