Ésta es mi solución actual utilizando jQuery UI 's autocomplete:
$('#some-input').autocomplete({
source: 'some-url',
autoFocus: true,
minLength: 2,
select: function(event, ui) {
//remember the selected item
$('#some-input')
.data('selected-item', ui.item.label);
}
}).blur(function() {
var value = $('#some-input').val();
//check if the input's value matches the selected item
if(value != $('#some-input').data('selected-item')) {
//they don't, the user must have typed something else
$('#some-input')
.val('') //clear the input's text
.data('selected-item', ''); //clear the selected item
}
});
Cada vez que se activa el evento desenfoque, el valor de la entrada es verificó haber sido elegido previamente. Si no se ha seleccionado (usted sabe que debido a que el evento seleccionado nunca se activó), la variable 'elemento seleccionado' no coincidirá con el valor de la entrada. Entonces puedes hacer lo que quieras (borro la entrada, pero puedes probar algo más).
¿No puedes remanso una "escucha" en 'onChange' en el combo? Onche ha cambiado, significa que se ha seleccionado algo y, por lo tanto, puede habilitar el botón Enviar. – Steven