我创建了一个代码,它可以通过jQuery删除<input>
中的HTML标记
$("input").on("keypress",function(e){
var val = $(this).val();
var open = val.indexOf('<');
var close = val.indexOf('>');
if(open!==-1 && close!==-1) {
$(this).val(val.replace(val.slice(open,close+1),""));
}
});
演示: http://jsbin.com/uzibey/1/edit
但是我应该使用更好的想法或功能吗?
PS:无需服务器端安全性,在管理区域中使用btw。
答案 0 :(得分:3)
您还可以使用DOM来清理输入。只需创建一个虚拟元素(不将其插入文档),然后使用innerHTML
插入输入值。然后删除除文本节点之外的所有节点。
这样做的好处是可以使用实际的HTML解析器来检测HTML,而不是使用正则表达式逼近。将删除浏览器可以解释为HTML元素的任何内容。
这是一个非常基本的演示:http://jsfiddle.net/uA94h/
编辑:上面的演示完全删除了非文本节点。根据请求,这里是一个演示,其中元素被替换为其文本:http://jsfiddle.net/TknBs/。
答案 1 :(得分:2)
试试这个
$("input").on("keypress",function(e){
var val = $(this).val();
var regex = /(<([^>]+)>)/ig;
var result = val .replace(regex, "");
$(this).val(result);
});
答案 2 :(得分:1)
你可以使用正则表达式
<[^>]*(>|$)
尝试将此一个应用于输入字符串以查看它是否有帮助......
答案 3 :(得分:1)