jQuery UI对话框按钮文本作为变量

时间:2009-09-23 09:04:01

标签: jquery jquery-ui variables jquery-ui-dialog

有谁能告诉我如何在jQuery UI对话框中使用按钮文本的变量? 我想创建一个动态按钮名称。

12 个答案:

答案 0 :(得分:94)

这是行不通的,因为jQuery处理按钮名称的方式(可以带或不带引号)

这将有效:

var button_name = 'Test';
var dialog_buttons = {}; 
dialog_buttons[button_name] = function(){ closeInstanceForm(Function); }
dialog_buttons['Cancel'] = function(){ $(this).dialog('close'); }   
$('#instanceDialog').dialog({ buttons: dialog_buttons });

答案 1 :(得分:57)

您可以做的是在对话框中指定一个ID按钮,然后使用标准jQuery对其进行操作。

$("#dialog_box").dialog({
    autoOpen: false,
    modal: true,
    resizable: false,
    buttons: [{
        text: "Ok",
        "id": "btnOk",
        click: function () {
            //okCallback();
        },

    }, {
        text: "Cancel",
        click: function () {
            //cancelCallback();
        },
    }],
    close: function () {
        //do something
    }
});

设置按钮文字:

 var newLabel = "Updated Label";
 $("#btnOk").html('<span class="ui-button-text">'+ newLabel +'</span>')

答案 2 :(得分:7)

这里的问题是对话框插件没有为其按钮分配id,因此很难直接修改它们。

相反,正常初始化对话框,按其包含的文本找到按钮并添加ID。然后可以直接访问该按钮以更改文本,格式化,启用/禁用它等等。

$("#dialog_box").dialog({
buttons: {
    'ButtonA': function() {
        //... configure the button's function
    }
});
$('.ui-dialog-buttonpane button:contains(ButtonA)').attr("id","dialog_box_send-button");            
$('#dialog_box_send-button').html('Send')       

答案 3 :(得分:2)

也许我错过了这一点 - 但最简单的方法是使用二传手吗?

     $("#dialog_box").dialog({
        buttons: {
         [
            text:"OK",
            click: function() {
                //... configure the button's function
            }
         ]
        });

        $("#dialog_box").dialog("option", "buttons", { "Close": function() { $(this).dialog("close"); } });

答案 4 :(得分:2)

  1. jQuery UI对话框中的button option接受对象和数组。
  2. 按钮是button widget的实例。使用API​​而不是自己操作按钮。
  3. &#13;
    &#13;
    $(function() {
      // using textbox value instead of variable
      $("#dialog").dialog({
        width: 400,
        buttons: [
          { text: $("#buttonText0").val(), click: function() { $(this).dialog("close"); } }, 
          { text: $("#buttonText1").val(), click: function() { $(this).dialog("close"); } }
        ]
      });
      $("#updateButtonText").on("click", function() {
        var $buttons = $("#dialog").dialog("widget").find(".ui-dialog-buttonpane button");
        console.log($buttons.get());
    
        $buttons.eq(0).button("option", "label", $("#buttonText0").val());
        $buttons.eq(1).button("option", "label", $("#buttonText1").val());
    
        // few more things that you can do with button widget
        $buttons.eq(0).button("option", "icons", { primary: "ui-icon-check" });
        $buttons.eq(1).button("disable");
    
        $("#dialog").dialog("open");
      });
    });
    &#13;
    @import url("https://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.min.css");
    &#13;
    <script src="https://code.jquery.com/jquery-1.11.3.min.js"></script>
    <script src="https://code.jquery.com/ui/1.11.4/jquery-ui.min.js"></script>
    
    <div id="dialog" title="Sample Dialog">
      <p>Proceed?</p>
    </div>
    
    <p style="text-align: center;">
      <input type="text" id="buttonText0" value="OK">
      <input type="text" id="buttonText1" value="Cancel">
      <input type="button" id="updateButtonText" value="Update Button Text">
    </p>
    &#13;
    &#13;
    &#13;

答案 5 :(得分:1)

这会奏效 $($("button", $("#dialogId").parent())[NUMBER_OF_YOUR_BUTTON]).text("My Text");

答案 6 :(得分:1)

不要忘记

$($("button", $(".info_dialog").parent())[1]).html("<span class='ui-button-text'>Button text here.</span>");

答案 7 :(得分:1)

这可以通过以下步骤完成:

  1. 在JavaScript中,您可以创建按钮数组。
  2. 将按钮属性设置为按钮数组。
  3. 以下示例解释了上述步骤。

    1. btnArray中定义了两个按钮,如下所示;
    2.  var btnArray = [
          { text: "Add Entry",
            click: function(){
              this.retVal = true;
              addRowIntoTemplateManifest();
              $(this).dialog('close');
            }
          },
          { text: "Cancel",
            click: function(){
              this.retVal = false;
              $(this).dialog('close');
            }
          }
        ];
      

      写入自定义函数displayConfirmDialog_Dynamic(),其中包含对话框,对话框文本,按钮数组。对此功能的调用如下:

      displayConfirmDialog_Dynamic("Add Template Manifest Entry?", "Do you want to add following Cuboid Entry to Template Manifest?\nCuboidNane: '" + json.cuboidName + "' CuboidId: " + json.cuboidId + "\non Server:"
      + json.serverUrl , btnArray );
      

      函数displayConfirmDialog_Dynamic如下:

      //Confirmation dialog Dynamic Buttons
      function displayConfirmDialog_Dynamic(dlgTitle, message, btnArray)
      {
          var retVal;
          $("div#dialog-confirm").find("p").html(message);
      
          var confirmDlg = $( "#dialog-confirm" ).dialog({
                resizable: false,
                height: "auto",
                width: 400,
                modal: true,
                title: dlgTitle,
                buttons: btnArray,
                show:{effect:'scale', duration: 700},
                hide:{effect:'explode', duration: 700}  
          });
      
          confirmDlg.dialog('option', 'buttons', btnArray);
          confirmDlg.prev(".ui-dialog-titlebar").css({"background":"#ffc000", "color":"#ffffff", "font-size":"13px", "font-weight":"normal"}) ;
          confirmDlg.dialog("open");  
      }
      

      确认对话框模板定义为DIV标记,如下所示。请注意,title<p>标记的内容会被JavaScript代码动态更改。

      <div id="dialog-confirm" title="Empty the recycle bin?" style="display:none;">
        <p>These items will be permanently deleted and cannot be recovered. Are you sure?</p>
      </div>
      

      上面代码显示的屏幕截图对话框如下所示:

      enter image description here

答案 8 :(得分:0)

var buttonName = "something";
$('#button-id').attr('value', buttonName);

答案 9 :(得分:0)

为按钮分配一个类。按钮文本将在您定义的类中包含名为ui-button-text的类的范围内。 因此,如果您为按钮提供类.contacts-dialog-search-button,则访问该文本的代码将为:

$('.ui-button-text','.contacts-dialog-search-button').text();

这是我用于当前项目按钮的代码,给你一个例子。

buttons : [
            {
                text : 'Advanced Search',
                click : function(){
                    if($(this).dialog("option", "width")==290){
                        $('#contacts-dialog-search').show();
                        $(this).dialog("option", "width", 580);
                        $('.ui-button-text','.contacts-dialog-search-button').text('Close Search');
                    }
                    else{
                        $('#contacts-dialog-search').hide();
                        $(this).dialog("option", "width", 290);
                        $('.ui-button-text','.contacts-dialog-search-button').text('Advanced Search');
                    }
                },
                "class" : "contacts-dialog-search-button"
            }
            ]

答案 10 :(得分:0)

使用内联行为完全可以:

  1. 使用两个setter方法创建Dialog类,setYesButtonName()和setNoButtonName。

  2.         function ConfirmDialog() {
                var yesButtonName = "Yes";
                var noButtonName = "No";
                this.showMessage = function(message, callback, argument) {
                    var $dialog = $('<div></div>')
                        .html(message)
                        .dialog({
                            modal: true,
                            closeOnEscape: true,
                            buttons: [
                                {
                                    text:yesButtonName,
                                    click: function() {
                                        if (callback && typeof(callback) === "function") {
                                            if (argument == 'undefined') {
                                                callback();
                                            } else {
                                                callback(argument);
                                            }
                                        } else {
                                            $(this).dialog("close");
                                        }
                                    }
                                },
                                {
                                    text:noButtonName,
                                    click: function() {
                                        $(this).dialog("close");
                                    }
    
                                }
                            ]
                        });
                    $dialog.dialog("open");
                };
    
                this.setYesButtonName = function(name) {
                    yesButtonName = name;
                    return this;
                };
    
                this.setNoButtonName = function(name) {
                    noButtonName = name;
                    return this;
                };
            }
    

    1. 创建ConfirmDialog类的对象。

       this.CONFIRM_DIALOG = new ConfirmDialog();
      
    2. 对任何事件调用方法,比方说onclick()

      OK_DIALOG.setYesButtonName('Wana Marry').showMessage('Worst Idea!!');
      
    3. 工作完成!!

答案 11 :(得分:0)

为什么不是一个班轮...

$("span.ui-button-text:contains('OLD BUTTON NAME')").html('NEW BUTTON NAME');