如何确定用户是否在JS中开始使用新单词?

时间:2015-07-30 08:40:05

标签: javascript jquery

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

我想做什么:

我正在编写一个文档工具,其中包含针对不同类型的自动完成功能。如果输入f.e. @它将在一个框中填充Java类,#将填充测试类等。现在我不想填充这些值,如果用户正在编写像{{ {1}}。因此,我只需要将值填充到单词的开头即可。

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

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

5 个答案:

答案 0 :(得分:2)

一种方法是使用@检查输入框中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>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

Try this JSFiddle.我正在执行检查:

var text = $("#test").val();
if (text.length == 0 || text.charAt(text.length - 1).match(/[\s\b]/)) {
    $("#result").html("new word");
} else {
    $("#result").html("no new word");
}

如果您希望将其他字符包含为编辑器的“空格”(例如大括号),则可以轻松调整.match()模式。

答案 2 :(得分:-1)

一个解决方案是这样的:

1-声明变量“newWord = true”

2-使用keydown事件检查按下的键是否为空格

如果是:newWord = true

如果否:newWord = false

var newWord=true;
$("#textarea").keydown(function(e){
     if(e.keyCode == 32){
          newWord=true;
     }else{
          newWord=false;
          switch(e.keyCode){
               //work to do
          }
     }
})

答案 3 :(得分:-1)

假设在id =“txtchangedetection”的文本输入中输入文本:

   $("#txtchangedetection").change(function(){
        console.log("The text has been changed.");
      });
/*This is `JQuery`*/

我知道您想要检测输入中的单词更改。如果我错了,请准确。 “新词”是什么意思?

答案 4 :(得分:-1)

在输入字段上使用按键...使用特殊字符填充if中的数组

if(prev == 13 || prev == 32 || $('#doc').val().length==0 || prev==null){
    listen = true;
}else{
    listen = false;
}

prev = e.which;

if(listen && $.inArray(String.fromCharCode(e.which),["@","#"]) != -1){
    e.preventDefault();
    alert("populate box here");
    listen = false;
    prev = null;
}

小提琴https://jsfiddle.net/6okfqub4/