【发布时间】:2011-02-17 02:43:03
【问题描述】:
我正在编写一个 ASP.NET MVC 站点,我正在尝试使用 jQuery UI 自动完成功能实现一个自动完成功能。
这是我的页面的设置方式:
我有一个 ID 为 TagInput 的文本框。接下来,我有以下内联 Javascript 代码:
$().ready(function () {
bindAutoTagComplete('#TagInput');
});
除了引用该页面上的 jQuery 和 jQuery UI 库之外,我还引用了这个外部 Javascript 代码:
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;
}
});
}
一切正常,除了带有标签名称的 AJAX 结果被分成单个字符,而不是单词。 例如,如果我有两个标签“foo”和“bar”被返回,弹出列表的自动完成列表:
- f
- o
- o
- b
- 一个
- r
代替:
- 富
- 酒吧
我已经调试了代码,但没有找到 是什么导致了这种不正确的划分。有什么想法吗? 提前致谢。
更新:这是服务器当前在该 AJAX 请求中返回的示例:
"foo bar some-other-tag"
【问题讨论】:
-
您能否提供从服务器返回的 json 结果示例?
标签: jquery jquery-ui autocomplete jquery-autocomplete jquery-ui-autocomplete