JavaScript检测文本区域中是否输入了字符串

4

在javascript中,有没有一种方法可以检测文本区域中是否输入了单词/字符串?我想检测Ace编辑器或CodeMirror中输入的字符串<svg>,然后执行其他操作。听起来好像已经实现了,但我不知道如何做。

4个回答

2

Javascript可以绑定DOM对象的按键事件,包括上下左右等。需要在HTML中设置相应属性。

<textarea onkeyup='checkText(this.value);'></textarea>

这是调用Javascript函数并将textarea的值(text)作为参数的关键行。

以下是一个完整的例子,演示了如何使用。监听KeyUp事件更加推荐,因为在调用函数之前,新字符已经包含在文本值中了。

<html>
<head>
<script type='text/javascript' >
var oldText = '';

function checkText(text)
{
    if(text.length >= 1)
    {
        if(text == '<svg>' && text != oldText)
        {
            alert("<svg> found");
        }
    }
    oldText = text;
}
</script>

<body>

<textarea onkeyup='checkText(this.value);'></textarea>

</body>
</html>

你不需要迭代文本或调用string.prototype.search()来查找文本? - Schoening
如果在文本区域中输入了其他文本,则它将无法正常工作。 - enem

2

我知道这与其他人的答案有些相似,但提供了另一种方法:

document.getElementById('textArea').onkeypress = function() {
    if(/\<svg\>/i.test(document.getElementById('textArea').value) === true) {
        // do whatever you want here
    }
}

如果你对JS中的正则表达式不熟悉,那么它们是一种在事物中查找某些字符串(比如用户输入)的绝佳方式。创建后添加i标志可以忽略大小写,以防你不知道。此外,在标签中放置此脚本而没有onload事件或类似事件将无法工作 - 因为文档尚未完全加载,因此没有内容供脚本搜索。希望这有所帮助!

1
在CodeMirror中,每当代码更改时触发"change"事件。当此事件被触发时,您可以简单地扫描内容以查找感兴趣的字符串。或者,如果您期望有一个庞大的文档,并且希望这个过程更加高效,您可以仅扫描文档的更改部分(注意处理字符串位于更改和未更改部分边界的情况)。
cmInstance.on("change", function(cm) {
  if (cm.getValue().indexOf("<svg>") > -1)
    doSomething();
});

1
你可以使用onchange事件,将输入的内容与期望的内容进行比较。
<html>
<script>

function checktext(){
var val = document.getElementById("textbox").value;
  // val is what is in the textbox
  // compare val here
  // for example
  if (val == "<svg>"){
    alert(val);
  }
}
</script>
<body>

<textarea id="textbox" onchange="checktext()"></textarea>
</body>

</html>

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接