显示用户在文本框中键入指定字符时的建议

Posted

技术标签:

【中文标题】显示用户在文本框中键入指定字符时的建议【英文标题】:Show suggestions from when user types a specified character in textbox 【发布时间】:2019-02-25 00:29:58 【问题描述】:

问题陈述:使用 javascript 或 Jquery,我想构建此功能,如果用户在文本框中键入指定字符,例如 @ 符号,则数组的值应显示在下拉列表中。比如说我有一个带有值的数组: 值[yyyy,yy]

当用户输入:abc@ 然后在@ yyyy 和yy 之后应该出现在下拉列表中。 就像我们在whatsapp组中写@符号时,它会显示该组的联系人列表。此功能与此类似。 此外,它不同于在用户键入内容时显示建议的普通自动建议。它不同于 jquery 自动完成功能,后者根据文本框中的输入显示建议。在这里,我们希望下拉列表中的预定义列表的值,即用户键入 @ 符号的那一刻,而不是基于文本框中的整个输入。

请专家帮忙实现。

【问题讨论】:

你试过什么?你可以从onkeyup 和一个函数开始,它会在你想要的地方显示下拉菜单,然后显示你想出的代码 我们如何编写一个显示下拉列表的函数? 【参考方案1】:

基本实现: 您可以在输入/某些特定元素的按键上附加一个侦听器(也可以是contenteditable div) 然后你可以检查用户是否按下了@键。

let element = document.getElementById('#some-element');

element.addEventListener('keydown', function(event) 
  const key = event.key;
  if (key === '@') 
    displaySuggestions();
  
);

只要用户按下“@”键,您就可以调用displaySuggestions() 函数。 这将是一个您可以构建的简单组件,当用户单击建议中的任何值时,您可以将该值插入到插入符号位置。

请参阅以下内容:Insert text into textarea at cursor position (Javascript)

有很多库很好地提供了这个功能,你可能想看看它们。


更新:

我在codesandbox上做了一个小项目,你可以点击以下链接查看:

这将有助于一个起点。

我已经记录了解释行为及其完成方式的代码。 在示例中,我使用了一个 contenteditable div,并且该示例肯定没有针对性能进行优化,但可以围绕它做很多事情来改进它。

我同意有大量的错误,所有这些都可以解决,但在 20-30 分钟内,我能做的就是这些。

总结一下 您可以从中汲取灵感或继续编辑此内容或提出更好的解决方案。 其他人可能对此有很好的解决方案,我期待他们。 愿 Javascript 的力量与你同在。

这是正在实施的项目:

【讨论】:

但是当在文本框中触发某些事件时,我如何制作一个显示下拉值的函数。如何构建这个显示建议()函数。

以上是关于显示用户在文本框中键入指定字符时的建议的主要内容,如果未能解决你的问题,请参考以下文章

当您在文本框中键入内容并按提交时,它会永久显示在文本框下方的列表中[关闭]

防止用户使用 jQuery 在文本框中输入非数字 [重复]

如何使文本框自动捕获用户正在键入的内容?

键入文本时在运行时从文本框中删除空格

在文本框中插入整数值

通过键入选择组合框中的项目