From 5d1e29764024128e9cc71a19589cfe11e6241242 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Scott=20Gonz=C3=A1lez?= Date: Tue, 20 Jul 2010 14:35:54 -0400 Subject: [PATCH] Autocomplete (combobox demo): Detect valid entries when typed, but not selected from menu. Fixes #5605 - Autocomplete combobox demo does not accept valid values. --- demos/autocomplete/combobox.html | 20 +++++++++++++++----- 1 file changed, 15 insertions(+), 5 deletions(-) diff --git a/demos/autocomplete/combobox.html b/demos/autocomplete/combobox.html index 37b74e155..c76cfa130 100644 --- a/demos/autocomplete/combobox.html +++ b/demos/autocomplete/combobox.html @@ -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; + } } } }) -- 2.39.5