Подтвердить что ты не робот

Текст диалогового окна jQuery UI в виде переменной

Может ли кто-нибудь сказать мне, как я могу использовать переменную для текста кнопки в диалоговом окне JQuery UI? Я хочу создать динамическое имя кнопки.

4b9b3361

Ответ 1

Это не будет работать из-за того, как 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 });

Ответ 2

Что вы можете сделать, это назначить кнопке в диалоговом окне идентификатор, а затем управлять им с помощью стандартного 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>')

Ответ 3

Проблема заключается в том, что плагин диалога не назначает идентификатор своим кнопкам, поэтому их довольно сложно изменить напрямую.

Вместо этого инициализируйте диалог как обычно, найдите кнопку в тексте, который он содержит, и добавьте идентификатор. Затем к кнопке можно получить доступ, чтобы изменить текст, форматировать, включить/отключить его и т.д.

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

Ответ 4

Возможно, мне не хватает смысла - но не самый простой способ использовать setter?

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

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

Ответ 5

Это будет работать $($("button", $("#dialogId").parent())[NUMBER_OF_YOUR_BUTTON]).text("My Text");

Ответ 6

И не забывайте

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

Ответ 7

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

Ответ 8

назначить класс кнопке. Текст кнопки будет в диапазоне с классом 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"
            }
            ]

Ответ 9

Да, возможно, с встроенным поведением:

  • Создайте класс Dialog с двумя методами setter, setYesButtonName() и setNoButtonName.

        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;
            };
        }

  • Создать объект класса ConfirmDialog.

     this.CONFIRM_DIALOG = new ConfirmDialog();
    
  • Вызов метода для любого события, скажем, onclick()

    OK_DIALOG.setYesButtonName('Wana Marry').showMessage('Worst Idea!!');
    

Работа выполнена!

Ответ 10

  • Параметр кнопки в диалоговом окне интерфейса jQuery принимает объекты и массивы.
  • Кнопки являются экземплярами виджета . Используйте API вместо того, чтобы самостоятельно манипулировать кнопками.

$(function() {
  // using textbox value instead of variable
  $("#dialog").dialog({
    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, $buttons.eq(0), $buttons.eq(1));
    $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");
  });
});
@import url("http://code.jquery.com/ui/1.11.4/themes/smoothness/jquery-ui.min.css");
<script src="http://code.jquery.com/jquery-1.11.3.min.js"></script>
<script src="http://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>