我有一个问题,我正在重复使用对话框,所以我不必复制代码。我遇到的问题是当我点击“添加新”按钮时,我有按钮“保存”和“取消”。对话框中的保存按钮处理保存信息。如果我单击“编辑现有”按钮编辑我的信息,我希望“保存”按钮更改为“编辑”按钮。这可能吗?
答案 0 :(得分:1)
我认为您尝试做的是在运行时根据用户操作更改按钮的文本。这个涉及理查德沃思的discussion可能有所帮助,而这正是我必须用来完成你想要做的事情。
基本上,通过将按钮数组定义为对象文字(在对话框定义中内联),您无法实现的目的。你应该做的是在对话框初始化之外定义你的按钮数组;您的数组索引可以是您的标签文本(正如您将在消息讨论示例中看到的那样)。然后,在初始化数组时,只需将按钮属性分配给按钮数组。
在伪代码中,你会这样做:
function createDialog(mode) { //mode=new for dayClick; edit for eventClick
var myButtons = {}; //initialize the object to hold my buttons
if (mode === "new") {
myButtons["Save"] = function() {...} //the function that does the save
} else {
myButtons["Edit"] = function() {...} //the function that edits
}
myButtons["Cancel"] = function() {...} //common cancel function for either new or edit mode
//other logic
$("#dialogAddEdit").dialog({
...
buttons: myButtons, //assign the buttons property to your myButtons array object
...
});
}
希望这会有所帮助!!
答案 1 :(得分:0)
还有另一个简单的解决方案:
只需像往常一样创建对话框,给两个(或更多)按钮一个"关键字" (这里" open_key"" cancel_key"),然后,刚刚初始化后,使用一点jQuery技巧设置这些HTML元素的文本:包含()强>
下面的示例代码(pp_loca是我获取本地化字符串的功能,但pp_loca无法用于"按钮{...}"选项...
$( "#dialog_open_from_server" ).dialog({
resizable: false,
height: "auto",
width: 600,
modal: true,
buttons: {
"open_key": function() {
$( this ).dialog( "close" );
},
"cancel_key": function() {
$( this ).dialog( "close" );
}
}
});
$('.ui-button:contains("open_key")').html(pp_loca('ITF_26'));
$('.ui-button:contains("cancel_key")').html(pp_loca('ITF_27'));