Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/471.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,JavaScript自动完成概念,但不是_Javascript_Jquery_Arrays - Fatal编程技术网

jQuery,JavaScript自动完成概念,但不是

jQuery,JavaScript自动完成概念,但不是,javascript,jquery,arrays,Javascript,Jquery,Arrays,好的,这是一个多部分的概念。不过,我相信如果我能弄明白这一点,其余的都会随之而来 我有一系列的单词和短语。我有一个文本区,人们可以在这里输入。我想做的是能够在数组中搜索用户键入内容中的匹配项或相似项。我能想到的最接近的东西是自动完成功能。但这并不完全是我想要的,是的,我想要的部分是一个自动完成功能,但更多的是在最后运行,现有的自动完成是有点笨重,我的需要 我的目标是,在用户点击空格键后,在他们键入时触发搜索。到目前为止,我还不错。我的问题是我的逻辑在这里有缺陷。我希望能够把整个文本放到空格键上,

好的,这是一个多部分的概念。不过,我相信如果我能弄明白这一点,其余的都会随之而来

我有一系列的单词和短语。我有一个文本区,人们可以在这里输入。我想做的是能够在数组中搜索用户键入内容中的匹配项或相似项。我能想到的最接近的东西是自动完成功能。但这并不完全是我想要的,是的,我想要的部分是一个自动完成功能,但更多的是在最后运行,现有的自动完成是有点笨重,我的需要

我的目标是,在用户点击空格键后,在他们键入时触发搜索。到目前为止,我还不错。我的问题是我的逻辑在这里有缺陷。我希望能够把整个文本放到空格键上,并对照我的单词和短语数组进行检查。但我不知道怎么做。目前我在文本区域本身上使用split(),其中空格是split()分隔符,但我现在意识到这是不对的。我最初的想法是拆分它,对照另一个数组检查它,如果有匹配的东西,那将是快乐的一天,然后我意识到我有短语,如果我试图检查一个短语是否匹配,那么我不会匹配一个


希望这是有道理的。我需要遍历这个逻辑,目前真的没有代码,因为我没有调试,我正在试图找出一个可以工作的逻辑。所以我可以继续前进

我会将问题至少分为两个分支:

  • 由用户触发的搜索事件
  • 搜索功能
  • 结果可视化
  • 如果我了解您试图实现的内容,我将触发对任何“
    onkeypress
    ”事件的搜索,除非您的数组不是太大(否则它将挂起在任何按键上)

    然后,搜索功能:您必须在数组中搜索,因此我将逐个元素进行搜索。Jquery提供了一个很好的函数。另外,我会考虑插件。

    结果可视化:我不清楚您想要显示什么(网格、表…?),但是如果数组的每个元素都与不同的DOM对象关联,那么您可以在运行时修改它的属性,也许可以使用jquery


    如果您需要更多,请告诉我。

    更新:

    检查这把小提琴:

    您需要根据自己的需求对其进行调整,但它将给出如何实现以下逻辑的合理想法


    嗯,按键时的逻辑(可能是任意键,而不仅仅是空格键)可能类似于:

    1) 获取当前光标位置-说
    X
    例如,请参阅:

    2) 在
    X
    左侧获取
    N
    字符。i、 e.从索引
    X-N
    X
    的整个文本的子字符串-将其存储在
    Y
    中。您需要为
    N
    (例如:100)确定一个值
    N
    是您要匹配的最长单词/短语

    例:如果全文是
    “你好,世界,我是一个句子”
    ,光标在末尾,而
    N
    10
    Y
    将是
    “一个句子”

    3) 按空格字符拆分
    Y
    ,并以增量方式将每个拆分存储在数组中,然后将其反转-让我们调用数组
    短语

    例:如果
    Y
    “这是一个句子”
    ,那么
    短语将是

    [ "this is a sentence", "this is a", "this is", "this" ]
    

    4) 用
    词组中的每个项目检查你的单词/词组数组
    -最长的匹配部分将排在第一位,最短的匹配部分将排在最后-这组匹配是你的自动完成列表。

    用小提琴更新了答案,以演示逻辑这超出了我可以要求的帮助,非常感谢你。这不仅是一个我可以使用的工作示例,而且在查看它的过程中,我意识到这将花费我几天的时间,因为我最终走错了方向。很高兴我能提供帮助+我想问一个非常有趣的问题。顺便说一句,我一直在做一些类似的事情,这样任务就简单了一些。另外,看看我发布的一个相关问题(稍微相关),如果你有任何想法,请分享: