更改jquery对话框按钮

时间:2010-08-17 01:57:24

标签: jquery jquery-ui jquery-plugins

我有一个问题,我正在重复使用对话框,所以我不必复制代码。我遇到的问题是当我点击“添加新”按钮时,我有按钮“保存”和“取消”。对话框中的保存按钮处理保存信息。如果我单击“编辑现有”按钮编辑我的信息,我希望“保存”按钮更改为“编辑”按钮。这可能吗?

2 个答案:

答案 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'));