好的,这是一个多部分概念。但是我敢肯定,如果我能把这件作品拿出来,剩下的就会跟进。
我所拥有的是一系列单词和短语。我有一个人们可以输入的TextArea。我想要做的是能够在数组中搜索用户输入内容的匹配或相似之处。我能想到的最接近的是自动完成功能。但这不完全是我想要的,部分是我想要的是自动完成功能,但在最终运行中还有更多,现有的自动完成对我的需求来说有点笨重。
我的目标是,在用户点击空格键之后是在键入时触发搜索。到目前为止,我很好。我的问题是我的逻辑从这里有缺陷。我希望能够把整个文本的男孩带到空格键的位置,然后根据我的单词和短语进行检查。但我不确定如何。目前我在textarea本身是split(),其中space是我的split()分隔符,但我现在意识到这不对。我最初的想法是拆分它,检查它与另一个数组,如果匹配的话,那将是一个快乐的日子,然后我意识到我有短语,如果我试图检查一个短语匹配然后我不会匹配一个。
希望这是有道理的。我需要对此进行逻辑处理,目前还没有代码,因为我没有调试,我试图找出一个可以使用的逻辑。所以我可以继续前进。
答案 0 :(得分:2)
<强>更新强>
检查这个小提琴:http://jsfiddle.net/VwNHN/
您需要根据您的要求进行调整,但它会对如何实现以下逻辑有充分的了解。
嗯,按键时的逻辑(可能是任何键而不仅仅是空格键)可以是:
1)获取当前光标位置 - 说X
请参阅例如:http://demo.vishalon.net/getset.htm
2)获取N
左侧的X
个字符。即从索引X-N
到X
的整个文本的子字符串 - 将其存储在Y
中。您需要修复N
的值(例如:100)。 N
是您要查找的最长的字词/短语。
例如:如果全文为"hello world i am a sentence"
,光标位于最后,而N
为10
,则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)
我会将问题至少分成两个分支:
如果我理解您要实施的内容,我会触发搜索任何“onkeypress
”事件,除非您的数组不是太大(否则会挂起任何按键)。
然后,搜索功能:你必须搜索一个数组,所以我会逐个元素搜索。 Jquery提供了一个很好的jQuery.each()函数。另外,我会在_.each(list, iterator, [context])插件中考虑underscore。
结果的可视化:我不清楚你想要显示什么(网格,表......?),但是如果数组的每个元素都与不同的DOM对象相关联,那么你可以修改它的属性运行时,也许是jquery。
如果您需要更多信息,请与我们联系。