您如何使用JS或jQuery确定用户输入的内容是否是一个新词?
我想做什么:
我正在编写一个文档工具,其中包含针对不同类型的自动完成功能。如果输入f.e. @
它将在一个框中填充Java类,#
将填充测试类等。现在我不想填充这些值,如果用户正在编写像{{ {1}}。因此,我只需要将值填充到单词的开头即可。
我知道keydown,keyup事件等。我只是不知道如何正确检查这种特定类型的事件。
一种方法是将每个键入的字母保存在变量中,然后检查之前的字母是否为""是一个空间,如果是,我们知道它是一个新词。这是最好/最有效的方法吗?
答案 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;
答案 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;
}