Текст модальной диалоговой кнопки jQuery - PullRequest
8 голосов
/ 25 октября 2010

На основе приведенного ниже кода для отображения диалогового окна JQuery текст кнопки отображается как литерал «b», а не как значение переменной b.

Т.е.: showWarningDialog('myBody', 'myTitle', 'go') показывает диалог с кнопкой, помеченной b вместо go.

Как вы можете заставить go появляться?

function showWarningDialog(theBody, theTitle, buttonText) {
    var t = "Warning";
    if (theTitle != null) {
        t = theTitle;
    }

    var b = "Ok";
    if (buttonText != null) {
        b = buttonText;
    }

    $("#div-dialog-warning div").text(theBody);

    $("#div-dialog-warning").dialog({
        title: t,
        resizable: false,
        height: 160,
        modal: true,
        buttons: {
            b : function () {
                $(this).dialog("close");
            }
        }
    });
}

Ответы [ 4 ]

13 голосов
/ 25 октября 2010

Согласно документации jQuery UI , имя кнопки происходит от ключа кнопки в объекте buttons. В этом случае замените этот бит:

$("#div-dialog-warning").dialog({
    title: t,
    resizable: false,
    height: 160,
    modal: true,
    buttons: {
        b : function () {
            $(this).dialog("close");
        }
    }
});

с этим:

var buttonOpts = {};
buttonOpts[b] = function () {
    $(this).dialog("close");
};
$("#div-dialog-warning").dialog({
    title: t,
    resizable: false,
    height: 160,
    modal: true,
    buttons: buttonOpts
});

Вы должны трактовать b как переменную, следовательно, используйте buttonOpts[b] вместо того, что вы сделали, что эквивалент использования buttonOpts.b.

2 голосов
/ 25 октября 2010

вот что вам нужно добавить после инициализации диалогового окна:

 $('div.ui-dialog-buttonpane button:contains(b)').empty().html(b);

вы, вероятно, захотите переименовать b, чтобы оно было немного более описательным и уникальным.

0 голосов
/ 25 октября 2010

Я думаю, что у вас отсутствует параметр в массиве congig. Там должно быть что-то вроде

buttons: {
        b : function () {
            $(this).dialog("close");
        },
        buttonText: b
}
0 голосов
/ 25 октября 2010

{b: 'бла'} будет означать, что b принимает имя переменной. определение массива вручную может исправить это, хотя я не могу представить, что нет специального синтаксиса для этого кнопки var = {}; кнопки [b] = функция () {}; $ (). диалог ({кнопки: кнопки});

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...