检查是否使用javascript在textarea中输入了任何html标签

时间:2015-03-01 08:57:20

标签: javascript jquery html textarea htmlspecialchars

我有一个简单的评论系统,我希望用户不要输入任何html特殊字符,如果他们这样做,他们应该提供不允许的" html标签的警告"。怎么做?

提交时,将ajax调用传递给另一个页面以将其存储在db。

所以在javascript本身(在ajax调用之前),如何查找输入的评论中是否有任何html标签。

任何建议。

2 个答案:

答案 0 :(得分:2)

要检查您是否可以在DOM中创建元素,将注释注入其中并使用[element].getElementsByTagName('*')检查任何html元素。如果length不为0,则注释中有html元素。类似的东西:

document.querySelector('#check').addEventListener('click', doCheck);

function doCheck(e) {
 var chkEl = document.createElement('div'), 
     isok,
     report,
     value = document.querySelector('#testing').value;
 if (!value.length) {return true;}
 chkEl.innerHTML = value;
 report = document.querySelector('[data-report]');
 isok = !chkEl.getElementsByTagName('*').length;
 report.setAttribute( 'data-report',
                 !isok 
                 ? 'you can\'t enter html here!' 
                 : 'text looks ok' );
 report.style.color = isok ? 'green' : 'red';
}
[data-report]:before {
  content: attr(data-report);
}
<textarea id="testing" placeholder="type some stuff"></textarea>
<span data-report=""></span>
<br>
<button id="check">check for html</button>

免责声明:您应始终检查服务器端。

答案 1 :(得分:1)

您可以在regex中使用以下语句:

if (/<[a-z][\s\S]*>/i.test(textareaContent)) {
  alert("html tags not allowed");
}

Kooilnc是对的。您应该始终检查服务器端的用户输入。

请参阅此问题Check if a string is html or not