javascript检测到在textarea中键入的字符串

时间:2014-04-19 01:25:07

标签: javascript textarea codemirror ace-editor

在javascript中是否有办法检测是否在textarea中输入了单词/字符串?我想检测在Ace编辑器或CodeMirror中输入的字符串<svg>,然后执行其他操作。听起来已经实施但我不知道如何。

4 个答案:

答案 0 :(得分:2)

在Javascript中可以绑定到DOM对象上的键上/下/按/ etc事件。您必须在HTML中设置适当的属性。

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

这是使用textarea的值(文本)调用Javascript函数的关键行。

这是一个演示此用法的完整示例。首先监听Key Up是首选,因为在调用函数之前,新字符将位于文本值中。

<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>

答案 1 :(得分:2)

我知道这有点类似于其他人&#39;答案,但它提供了另一种方法:

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

如果您不熟悉JS中的RegExes,那么他们可以通过 方式查找某些字符串 - 例如,用户的输入,就像您一样想。创建后的i标志会忽略大小写,只是在您不知道的 case 中。此外,在没有onload事件或类似事件的情况下将此脚本放在头部不会起作用 - 脚本没有任何内容可供搜索,因为文档还没有完全找到载满了。

希望这有帮助!

答案 2 :(得分: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>

答案 3 :(得分:0)

在CodeMirror中,只要代码更改,就会触发"change"事件。您可以在触发时轻松扫描您感兴趣的字符串的内容。或者,如果您期望一个巨大的文档,并希望它有效,您只能扫描文档的更改部分(注意处理字符串位于已更改和未更改部分的边界上的情况)。

cmInstance.on("change", function(cm) {
  if (cm.getValue().indexOf("<svg>") > -1)
    doSomething();
});