我正在编写一个ASP.NET MVC网站,我正在尝试使用jQuery UI自动完成功能实现自动完成功能。
以下是我的网页设置方式:
我有一个标识为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”返回,弹出的自动填充列表列出:
而不是:
我调试了代码,但没有找到导致这种错误分割的原因。有什么想法吗? 提前致谢。
更新:以下是该AJAX请求中服务器当前返回的内容示例:
“foo bar some-other-tag”
答案 0 :(得分:1)
问题很可能是split
函数,它看起来像是一些自定义拆分函数。这很难说,因为这里没有相关的代码。
答案 1 :(得分:0)
感谢您的提示,伙计们!我发现了问题;事实上,有两个:
现在有效!