Autocomplete (combobox demo): Detect valid entries when typed, but not selected from menu. Fixes #5605 - Autocomplete combobox demo does not accept valid values.

This commit is contained in:
Scott González 2010-07-20 14:35:54 -04:00
parent ba091650ff
commit 5d1e297640

View File

@ -29,7 +29,7 @@
delay: 0,
minLength: 0,
source: function( request, response ) {
var matcher = new RegExp( request.term, "i" );
var matcher = new RegExp( $.ui.autocomplete.escapeRegex(request.term), "i" );
response( select.children( "option" ).map(function() {
var text = $( this ).text();
if ( this.value && ( !request.term || matcher.test(text) ) )
@ -54,10 +54,20 @@
},
change: function( event, ui ) {
if ( !ui.item ) {
// remove invalid value, as it didn't match anything
$( this ).val( "" );
select.val( "" );
return false;
var matcher = new RegExp( "^" + $.ui.autocomplete.escapeRegex( $(this).val() ) + "$", "i" ),
valid = false;
select.children( "option" ).each(function() {
if ( this.value.match( matcher ) ) {
this.selected = valid = true;
return false;
}
});
if ( !valid ) {
// remove invalid value, as it didn't match anything
$( this ).val( "" );
select.val( "" );
return false;
}
}
}
})