javascript - JS如何判断用户是否开始新单词?

标签 javascript jquery

如何使用 JS 或 jQuery 确定用户输入的内容是否是新单词?

我想做的事:

我正在编写一个具有针对不同类型的自动完成功能的文档工具。如果您输入 f.e. @ 它将填充框中的 Java 类,# 将填充测试类等。现在,如果用户正在编写类似的内容,我不想填充这些值类似于 yourname@domain.com 的电子邮件。因此,我只需要在单词开头时填充这些值。

我知道 keydown、keyup 事件等。我只是不知道如何正确检查这种特定类型的事件。

一种方法是将每个键入的字母保存在变量中,然后检查前一个“字母”是否是空格,如果是,我们就知道这是一个新单词。这是最好/最有效的方法吗?

最佳答案

一种方法是使用 selectionStart 检查输入框中 @ 之前的内容:

onload = function() {
  
  
  var io = document.getElementById("io");
  
  io.onkeypress = function(e) {
    if(e.charCode == 64 && (
        io.selectionStart == 0 || io.value[io.selectionStart-1].match(/\s/)))
      
      document.getElementById("ac").innerHTML = "autocomplete!";
    
    else 

      document.getElementById("ac").innerHTML = "";
      
  }
}
<input id="io">
<div id="ac"></div>

关于javascript - JS如何判断用户是否开始新单词?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31718990/

相关文章:

jquery - 连续暂停循环遍历表元素

javascript - 完成我的 jQuery 打字功能

javascript - 悬停后保持视频控制 3 秒

javascript - Uncaught ReferenceError : postscribe is not defined at ctkvidinit ((index):3258)

javascript - Parse.com 代码不会部署 : "Could not load triggers"

javascript - ExtJS 不识别 IE11

javascript - 加载 gif 图像显示另一帧。使用 jquery

javascript - 与 not() 函数相反

javascript - 为什么我不能在我的对象脚本中传递这个 jquery 选择器?

jquery - Yii:部分渲染并以 JSON 格式返回 AJAX