jQuery Как отключить кнопки, определенные в массиве кнопок

#jquery #button

#jquery #кнопка

Вопрос:

Спасибо всем за предыдущие справочные сообщения. Ну, я как бы работаю над этим кодом, и я застрял в этой точке, не уверен, как пройти через это. Надеюсь, вы сможете помочь.

Вот проблема, у меня есть диалоговое окно, которое открывается с некоторыми текстовыми полями в нем, и в конце есть 2 кнопки OK и Cancel, что я хочу сделать, это проверить логическое значение для разрешений, если в случае его ложного, отключить кнопку OK, вот как кнопкиопределено,

 dialogBox.dialog ({
    modal:true,
    width: 600,
    height: 600,
    buttons: {
        OK : function () {
            // Some code here
            },
        Cancel : function () {
            // Some code here
            }
    }
    // Some more code below but irrelevant to problem
});
 

Теперь мне нужно отключить кнопку OK с помощью jQuery, как я могу это сделать, пожалуйста, помогите

Заранее спасибо

Ответ №1:

Диалоговые кнопки, созданные пользовательским интерфейсом jQuery, расположены в <div> элементе, который предоставляет ui-dialog-buttonpane класс.

Поскольку ваша OK кнопка является первой в наборе, вы можете использовать селектор :first, чтобы соответствовать ей:

 dialogBox.dialog("widget")
         .find(".ui-dialog-buttonpane button:first")
         .prop("disabled", true);
 

Ответ №2:

Вы можете установить кнопки в виде массива (что позволяет установить атрибут disabled. А затем переустанавливайте массив кнопок каждый раз, когда изменяется логическое значение (если вы можете как-то его отслеживать).

 dialogBox.dialog ({
modal:true,
width: 600,
height: 600,
buttons: [
{
    text: "Ok",
    disabled: "false",
    click: function() { // Some code here }
},
{
    text: "Cancel",
    click: function() { // Some code here }
}    
]
// Some more code below but irrelevant to problem
});
 

Затем, когда логическое значение изменяется на false, выполните:

 $( "#dialogBox" ).dialog( "option", "buttons", [
{
    text: "Ok",
    disabled: "true",
    click: function() { // Some code here }
},
{
    text: "Cancel",
    click: function() { // Some code here }
}    
]
 

Надеюсь, это помогло.