Вы были близки, как насчет использования $.inArray
для переключения кнопки? Кроме того, вам нужно использовать $(this).val()
или this.value
, чтобы выяснить значение элемента input
.
$("#dialog").dialog({
autoOpen: false,
buttons: {
Select: function() {
// Carry out some proceedure knowing they've selected a valid label.
},
Cancel: function() {
// Cancels the selection and closes the dialog box.
}
},
closeOnEscape: false,
create: function(event, ui) {
var labels = ["Bird", "Boar", "Dog", "Dragon", "Ox", "Tiger"];
$("#input").autocomplete({
delay: 0,
source: labels
});
$("#input").change(function() {
var enabled = $.inArray(this.value, labels) >= 0 ? "enable" : "disable";
$(".ui-dialog-buttonpane button:contains('Select')").button(enabled);
});
},
draggable: false,
modal: true,
resizable: false,
title: "Select Dialog",
width: 460
});
Пример: http://jsfiddle.net/kcrBB/
<ч />
Согласно комментарию, вот пример с keyup
вместо изменения:
$("#dialog").dialog({
open: function () {
$(".ui-dialog-buttonpane button:contains('Select')").button("disable");
},
buttons: {
Select: function() {
// Carry out some proceedure knowing they've selected a valid label.
},
Cancel: function() {
// Cancels the selection and closes the dialog box.
}
},
closeOnEscape: false,
create: function(event, ui) {
var labels = ["Bird", "Boar", "Dog", "Dragon", "Ox", "Tiger"];
$("#input").autocomplete({
delay: 0,
source: labels,
select: function () {
$(".ui-dialog-buttonpane button:contains('Select')").button("enable");
}
});
$("#input").keyup(function() {
var enabled = $.inArray(this.value, labels) >= 0 ? "enable" : "disable";
$(".ui-dialog-buttonpane button:contains('Select')").button(enabled);
});
},
draggable: false,
modal: true,
resizable: false,
title: "Select Dialog",
width: 460
});
Пример: http://jsfiddle.net/kcrBB/16/