40 lines
1 KiB
JavaScript
40 lines
1 KiB
JavaScript
|
/*
|
||
|
* jQuery UI Autocomplete HTML Extension
|
||
|
*
|
||
|
* Copyright 2010, Scott González (http://scottgonzalez.com)
|
||
|
* Dual licensed under the MIT or GPL Version 2 licenses.
|
||
|
*
|
||
|
* http://github.com/scottgonzalez/jquery-ui-extensions
|
||
|
*/
|
||
|
(function( $ ) {
|
||
|
|
||
|
var proto = $.ui.autocomplete.prototype,
|
||
|
initSource = proto._initSource;
|
||
|
|
||
|
function filter( array, term ) {
|
||
|
var matcher = new RegExp( $.ui.autocomplete.escapeRegex(term), "i" );
|
||
|
return $.grep( array, function(value) {
|
||
|
return matcher.test( $( "<div>" ).html( value.label || value.value || value ).text() );
|
||
|
});
|
||
|
}
|
||
|
|
||
|
$.extend( proto, {
|
||
|
_initSource: function() {
|
||
|
if ( this.options.html && $.isArray(this.options.source) ) {
|
||
|
this.source = function( request, response ) {
|
||
|
response( filter( this.options.source, request.term ) );
|
||
|
};
|
||
|
} else {
|
||
|
initSource.call( this );
|
||
|
}
|
||
|
},
|
||
|
|
||
|
_renderItem: function( ul, item) {
|
||
|
return $( "<li></li>" )
|
||
|
.data( "item.autocomplete", item )
|
||
|
.append( $( "<a></a>" )[ this.options.html ? "html" : "text" ]( item.label ) )
|
||
|
.appendTo( ul );
|
||
|
}
|
||
|
});
|
||
|
|
||
|
})( jQuery );
|