Jquery ui 中间的单词自动完成(jQuery UI) 任何人都知道使用jQuery UI的自动完成小部件的好的样例代码,它可以自动完成文本框中间的单词,而不仅仅是结尾处单词的自动完成。p>
我正在使用jQueryUIAutoComplete小部件作为支持输入多个标记的组件。它类似于stack overflow的标记编辑器,但更简单:在“自动完成”下拉列表中没有花哨的格式,在编辑框中没有“标记”背景图像。我从开始,修改了它Jquery ui 中间的单词自动完成(jQuery UI) 任何人都知道使用jQuery UI的自动完成小部件的好的样例代码,它可以自动完成文本框中间的单词,而不仅仅是结尾处单词的自动完成。p>,jquery-ui,jquery-ui-autocomplete,Jquery Ui,Jquery Ui Autocomplete,我正在使用jQueryUIAutoComplete小部件作为支持输入多个标记的组件。它类似于stack overflow的标记编辑器,但更简单:在“自动完成”下拉列表中没有花哨的格式,在编辑框中没有“标记”背景图像。我从开始,修改了它 它工作正常,但AutoSook对多标记字符串中间的标签无效。例如,如果我键入C Fortran,然后将插入符号放在C之后,然后键入++,我希望在自动完成列表中看到C++,但我会再次看到Fortran 以下是迄今为止的代码: 这与所描述的问题相同,但问题更简单,因为
它工作正常,但AutoSook对多标记字符串中间的标签无效。例如,如果我键入
C Fortran
,然后将插入符号放在C
之后,然后键入++
,我希望在自动完成列表中看到C++
,但我会再次看到Fortran
以下是迄今为止的代码:
这与所描述的问题相同,但问题更简单,因为他可以依靠文本中的空@
来表示何时显示自动完成。在我的例子中,我不能仅仅依靠文本——我实际上需要找出插入符号的位置,并自动完成单词插入符号的位置
我可以自己使用caret或其他插件来构建它,但我想知道是否已经有一个基于jQuery UI的在线示例可以使用,而无需重新发明另一个轮子,特别是如果存在需要担心的特定于浏览器的情况。理想情况下,它的行为应该是这样的:每当用户将插入符号放在标记的内部或末尾(标记之间总是用1+空格分隔),就会显示该标记的自动完成。知道一个好的例子吗?我不知道这样的例子,但这里有一些你可以从以下开始:
var availableTags = [ ... ];
function split(val) {
return val.split(/ \s*/);
}
function extractLast(term) {
return split(term).pop();
}
$("#tags")
.bind("keydown", function(event) {
// don't navigate away from the field on tab when selecting an item
if (event.keyCode === $.ui.keyCode.TAB
&& $(this).data("autocomplete").menu.active) {
event.preventDefault();
}
})
.autocomplete({
minLength: 0,
source: function(request, response) {
var results = [],
selectionStart = this.element[0].selectionStart
term = extractLast(request.term.substring(0, selectionStart));
if (term.length > 0) {
results = $.ui.autocomplete.filter(availableTags, term);
}
response(results);
},
focus: function() {
return false; // prevent value inserted on focus
},
select: function(event, ui) {
var terms = split(this.value.substring(0, this.selectionStart));
terms.pop(); // remove the current input
terms.push(ui.item.value); // add the selected item
this.value =
$.trim(terms.join(" ") + this.value.substring(this.selectionStart)) + " ";
return false;
}
});
示例:
这里的主要警告是,selectionStart
方法在IE中不起作用。您可以用您在问题中提到的插件之一替换这些函数调用