2014-04-19 64 views
2

有沒有在javascript中檢測一個字/字符串是否在textarea中輸入的方法?我想檢測字符串<svg>在Ace編輯器或CodeMirror中輸入,然後執行其他操作。聽起來像它已經實施,但我不知道如何。JavaScript檢測字符串是在textarea中輸入

回答

2

它可能在Javascript中綁定到DOM對象的鍵上/下/按/等事件。您必須在HTML中設置適當的屬性。

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

這是使用textarea的值(文本)調用Javascript函數的關鍵線。

下面是一個演示此用法的完整示例。因爲在調用該函數之前新字符將處於文本值中,所以傾聽按鍵是首選。

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

您不需要迭代文本或調用string.prototype.search()來查看文本? – Schoening

+0

如果在文本區域輸入了其他文本,它將不起作用? – enem

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

我知道這有點類似於別人的答案,但它提供了另一種方法:如果你不熟悉JS正則表達式

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

,他們是一支偉大的找到某些字符串的方法 - 比如用戶的輸入,就像你想要的。創建後i標誌忽略了這種情況,只是在的情況下你不知道。另外,將這個腳本放在頭部而沒有onload事件或類似的東西將不起作用 - 腳本無法搜索,因爲文檔尚未完全加載。

希望這有助於!

0

在CodeMirror中,只要代碼更改,就會觸發"change"事件。當火災發生時,您可以簡單地掃描您感興趣的字符串的內容。或者,如果你期望一個巨大的文件,並希望這是一個有效的文件,你只能掃描文件的變化部分(注意處理字符串位於已更改和未更改部分邊界的情況)。

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