Javascript 选择单词后,将单词组合为自动完成提示

Javascript 选择单词后,将单词组合为自动完成提示,javascript,jquery,autocomplete,Javascript,Jquery,Autocomplete,我有一个段落,我正在拆分并创建一个数组,该数组稍后将传递给jQuery autocomplete。它工作正常,但我想要的是,一旦我选择一个单词并按下空格键,所选单词的下一个或多个单词应该由自动完成提示。可能吗 这是我当前的代码: var curDocParaText = $('.docTextFull').text(); var docWords = curDocParaText.replace(/\s{2,}/g, ' ').split(" "); $( "#parameter" ).aut

我有一个段落,我正在拆分并创建一个数组,该数组稍后将传递给jQuery autocomplete。它工作正常,但我想要的是,一旦我选择一个单词并按下空格键,所选单词的下一个或多个单词应该由自动完成提示。可能吗

这是我当前的代码:

var curDocParaText = $('.docTextFull').text();
var docWords = curDocParaText.replace(/\s{2,}/g, ' ').split(" ");

$( "#parameter" ).autocomplete({
    source: function(req, responseFn) {
                var re = $.ui.autocomplete.escapeRegex(req.term);
                var matcher = new RegExp( "^" + re, "i" );
                var a = $.grep( docWords, function(item,index){
                    return matcher.test(item);
                });
                responseFn( a );
            }
});

这是工作,但我不知道下一步要做什么,以实现我想要的。欢迎您提供任何建议。

您可以将任何单词推送到代码中的建议数组a,从而将其添加到自动完成建议中。因此,您需要做的是:

检查最后一个字符是否为空白。 如果是,则从参数输入中获取最后一个单词。 在用作源docWords的单词列表中搜索该单词。 如果在源代码中,请在建议中添加下一个单词。 一个简单的演示是这样的,它会在响应之前添加到函数中;第部分:

请注意,这确实是一个基本示例,它不检查单词重复、大小写或其他任何内容。您需要扩展它,使其更加完整,并根据您的需要进行调整

下面是一个正在运行的演示:

var curDocParaText=$'.docTextFull'.text; var docWords=curDocParaText.replace/\s{2,}/g',.split; $parameter.autocomplete{ 来源:functionreq,responseFn{ var re=$.ui.autocomplete.escapeRegexreq.term; var matcher=new RegExp^+re,i; var a=$.grep docWords,functionitem,index{ 返回matcher.testitem; }; var textValue=$parameter.val; 如果textValue.slice-1=={ var start=textValue.lastIndexOf,textValue.length-2; var lastWord=textValue.substringstart+1,textValue.length-1; var pos=docWords.indexOflastWord; 如果lastWord!=&&docWords.length>pos{ a、 推送$parameter.val+docWords[pos+1]; } } 响应fn a; } }; 演示句: 敏捷的棕色狐狸跳过了懒狗
实际上,indexOflastWord是从字符串中找到的第一个单词中提取的,并从那里建议下一个单词,这是不准确的。虽然我找到了解决办法,但谢谢你为我指路。
// get the value in the input
var textValue = $("#parameter").val();

// if the last character is a space
if (textValue.slice(-1) == " ") {

    // get the last word in the sentence
    var start = textValue.lastIndexOf(" ", textValue.length-2);
    var lastWord = textValue.substring(start + 1, textValue.length-1);

    // check if the word is in the source list
    var pos = docWords.indexOf(lastWord);
    if (lastWord != " " && docWords.length > pos) {

        // if it is, suggest the next word too as a sentence
        a.push($("#parameter").val() +docWords[pos+1]);
    }
}