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