Reputation: 18065
I'm writing an ASP.NET MVC site where I'm trying to implement an autocomplete function using the jQuery UI autocomplete feature.
Here's how my page is setup:
I have a textbox with id TagInput
. Next, I have the following inline Javascript code:
$().ready(function () {
bindAutoTagComplete('#TagInput');
});
In addition to referencing the jQuery and jQuery UI libraries on that page, I also reference this external Javascript code:
function bindAutoTagComplete(item, otherRootDomain)
{
var url = (otherRootDomain || "") + "/tags/ajaxList";
function split( val ) {
return val.split(' ');
}
function extractLast( term ) {
return split( term ).pop();
}
$(item).autocomplete({
source: function( request, response ) {
$.getJSON(url, {
term: extractLast( request.term )
}, response );
},
search: function() {
// custom minLength
var term = extractLast( this.value );
if ( term.length < 2 ) {
return false;
}
},
focus: function() {
// prevent value inserted on focus
return false;
},
select: function( event, ui ) {
var terms = split( this.value );
// remove the current input
terms.pop();
// add the selected item
terms.push( ui.item.value );
// add placeholder to get the comma-and-space at the end
terms.push( "" );
this.value = terms.join( " " );
return false;
}
});
}
Everything works fine, except that the AJAX result with tag names is divided into single characters, not words. For example, if I have two tags "foo" and "bar" that are returned, the autocomplete list that pops up lists:
instead of:
I've debugged the code, but haven't found what is causing this incorrect division. Any ideas? Thanks in advance.
UPDATE: Here's a sample of what's currently being returned by the server in that AJAX request:
"foo bar some-other-tag"
Upvotes: 2
Views: 1461
Reputation: 18065
Thanks for your tips, guys! I found the problem; in fact, there were two:
It works now!
Upvotes: 0
Reputation: 105029
The problem is most probably the split
function which looks like it's some custom split function. It's hard to say since there's not all relevant code here.
Upvotes: 1