Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/jquery-ui/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ionic-framework/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery ui 中间的单词自动完成(jQuery UI) 任何人都知道使用jQuery UI的自动完成小部件的好的样例代码,它可以自动完成文本框中间的单词,而不仅仅是结尾处单词的自动完成。p>_Jquery Ui_Jquery Ui Autocomplete - Fatal编程技术网

Jquery ui 中间的单词自动完成(jQuery UI) 任何人都知道使用jQuery UI的自动完成小部件的好的样例代码,它可以自动完成文本框中间的单词,而不仅仅是结尾处单词的自动完成。p>

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 以下是迄今为止的代码: 这与所描述的问题相同,但问题更简单,因为

我正在使用jQueryUIAutoComplete小部件作为支持输入多个标记的组件。它类似于stack overflow的标记编辑器,但更简单:在“自动完成”下拉列表中没有花哨的格式,在编辑框中没有“标记”背景图像。我从开始,修改了它

它工作正常,但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中不起作用。您可以用您在问题中提到的插件之一替换这些函数调用