2013-07-26 26 views
0

我在我的网站上有一个文本框,我想阻止任何形式的html输入。我显然已经在服务器端阻止它,但我也想用多种原因阻止它使用JavaScript。我做了一个快速谷歌搜索,看看是否有一些现成的功能可用,但我找不到任何。使用Javascript检查HTML

有谁知道如何做到这一点?

编辑:对不起,如果问题不明确。我基本上想在用户在文本框中键入html并尝试提交表单时显示错误。服务器已经被编程为拒绝来自文本框的HTML输入,但我也想阻止它在客户端。

+0

你不想让用户输入? –

+3

你有没有考虑像'<' '>'这样的blockin chars? – DontVoteMeDown

+0

我不明白这个问题吗?你只是想禁用输入?还是你想*防止其中的HTML标记? –

回答

2

HTML

<textarea id='noHTML'></textarea> 

JS

var ta = document.getElementById('noHTML'); 

ta.onkeyup = function (e) { 
var val = this.value; 


    // alternate regexp /<\/*(p|div|span)\s*.*>/g 
    // fill the above regex with all html tags 
if(val.match(/<\/*[^<>]\s*.*>/g)) { 
    // alert('no html'); 
    // don't want an alert ? you can replace all html expressions 

    // alternate syntax for all entities 
    // this.value = val.replace(/&/g, "&amp;").replace(/>/g, "&gt;").replace(/</g, "&lt;").replace(/"/g, "&quot;"); 
    // its long and slow but the choice is yours 
    this.value = val.replace(/</g, '&lt;').replace(/>/g, '&gt;'); 
} 

} 

您可以测试并jsfiddle它玩;

这是您的问题的光解决方案。我的建议是在表单提交期间替换实体,或者如果您完全不需要,可以提醒用户输入。

+0

但我不明白,如果标签存在,我们是否试图阻止帖子?为什么我们不能用他们的HTML实体替换特殊的字符。 –

+0

@IanClark我会编辑它然后...举起 –

+0

不要误解我的意思,如果你想阻止用户发布信息,这将是一个很好的解决方案,但你可以做一些像[this](http:///stackoverflow.com/questions/784586/convert-special-characters-to-html-in-javascript)更改所有你需要的字符。 –