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

时间:2012-02-06 17:45:53

标签: javascript jquery arrays

好的,这是一个多部分概念。但是我敢肯定,如果我能把这件作品拿出来,剩下的就会跟进。

我所拥有的是一系列单词和短语。我有一个人们可以输入的TextArea。我想要做的是能够在数组中搜索用户输入内容的匹配或相似之处。我能想到的最接近的是自动完成功能。但这不完全是我想要的,部分是我想要的是自动完成功能,但在最终运行中还有更多,现有的自动完成对我的需求来说有点笨重。

我的目标是,在用户点击空格键之后是在键入时触发搜索。到目前为止,我很好。我的问题是我的逻辑从这里有缺陷。我希望能够把整个文本的男孩带到空格键的位置,然后根据我的单词和短语进行检查。但我不确定如何。目前我在textarea本身是split(),其中space是我的split()分隔符,但我现在意识到这不对。我最初的想法是拆分它,检查它与另一个数组,如果匹配的话,那将是一个快乐的日子,然后我意识到我有短语,如果我试图检查一个短语匹配然后我不会匹配一个。

希望这是有道理的。我需要对此进行逻辑处理,目前还没有代码,因为我没有调试,我试图找出一个可以使用的逻辑。所以我可以继续前进。

2 个答案:

答案 0 :(得分:2)

<强>更新

检查这个小提琴:http://jsfiddle.net/VwNHN/

您需要根据您的要求进行调整,但它会对如何实现以下逻辑有充分的了解。


嗯,按键时的逻辑(可能是任何键而不仅仅是空格键)可以是:

1)获取当前光标位置 - 说X 请参阅例如:http://demo.vishalon.net/getset.htm

2)获取N左侧的X个字符。即从索引X-NX的整个文本的子字符串 - 将其存储在Y中。您需要修复N的值(例如:100)。 N是您要查找的最长的字词/短语。

例如:如果全文为"hello world i am a sentence",光标位于最后,而N10,则Y"a sentence"

3)按空格字符拆分Y并逐步将每个拆分存储在一个数组中然后反转它 - 让我们调用数组PHRASES

例如:如果Y"this is a sentence" - 那么PHRASES就是

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

4)检查PHRASES中每个项目的单词/短语数组 - 最长的匹配部分将首先出现,而短匹配的部分将出现在最后 - 这组匹配是您的自动完成列表。

答案 1 :(得分:0)

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

  1. 用户触发的搜索事件。
  2. 搜索功能
  3. 结果可视化
  4. 如果我理解您要实施的内容,我会触发搜索任何“onkeypress”事件,除非您的数组不是太大(否则会挂起任何按键)。

    然后,搜索功能:你必须搜索一个数组,所以我会逐个元素搜索。 Jquery提供了一个很好的jQuery.each()函数。另外,我会在_.each(list, iterator, [context])插件中考虑underscore

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

    如果您需要更多信息,请与我们联系。