我有一个简单的评论系统,我希望用户不要输入任何html特殊字符,如果他们这样做,他们应该提供不允许的" html标签的警告"。怎么做?
提交时,将ajax调用传递给另一个页面以将其存储在db。中所以在javascript本身(在ajax调用之前),如何查找输入的评论中是否有任何html标签。
任何建议。
答案 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是对的。您应该始终检查服务器端的用户输入。