Javascript 如何使用JQuery停止在文本框中插入预定义的html标记 我需要阻止用户在文本框中插入文本时插入HTML标记,如果用户输入文本测试,则应该完全考虑字符串,而不是测试。 例如:我们在StackOverflow中选择“code sample”选项时会这样做
任何建议Javascript 如何使用JQuery停止在文本框中插入预定义的html标记 我需要阻止用户在文本框中插入文本时插入HTML标记,如果用户输入文本测试,则应该完全考虑字符串,而不是测试。 例如:我们在StackOverflow中选择“code sample”选项时会这样做,javascript,jquery,html,css,Javascript,Jquery,Html,Css,任何建议 编辑:在这里,我只能以测试代码格式保存字符串,但是当它被显示时,这些标记被呈现为HTML标记,也就是说文本变得粗体。你不能真正阻止用户做愚蠢的事情 您可以在他键入指示错误或使用regexp替换文本时添加检测 您可以添加html5表单验证,但仅适用于受支持的浏览器 您可以验证服务器端最佳选项 您可以在提交之前清理客户端的混乱 按需输入更正 <input type="text" onkeyup="correct(this)" /> function correct(ele)
编辑:在这里,我只能以测试代码格式保存字符串,但是当它被显示时,这些标记被呈现为HTML标记,也就是说文本变得粗体。你不能真正阻止用户做愚蠢的事情 您可以在他键入指示错误或使用regexp替换文本时添加检测 您可以添加html5表单验证,但仅适用于受支持的浏览器 您可以验证服务器端最佳选项 您可以在提交之前清理客户端的混乱 按需输入更正
<input type="text" onkeyup="correct(this)" />
function correct(ele) {
ele.value = ele.value.replace(/[\<]/gi, "<");
}
示例客户端stripTag函数
function stripTags(html) {
var tmp = doc.createElement("div");
tmp.innerHTML = html;
var text = tmp.textContent || tmp.innerText || "";
return text.replace(/[\<\>]/gi, "");
}
您可能需要上述2.的变体,或者只需在服务器端执行即可。您可以尝试以下技巧:
var html = $('#yourtextbox').val();
var divTmp = $('<div></div>').html(html);
var text = divTmp.text();
或者在一行中
var text = escapeHtml($('<div>').html($('#yourtextbox').val()));
如果要保留html代码,请使用此函数
function escapeHtml(text) {
return text
.replace(/&/g, "&")
.replace(/</g, "<")
.replace(/>/g, ">")
.replace(/"/g, """)
.replace(/'/g, "'");
}
是的,但是使用regex以外的东西可能会更好,比如jQuery查询整个内容。jquery html解释器>任何你自己的东西。然后你可以对白名单上的标签进行高级处理,并在提交过程中使用结果。是的,我只使用这种类型的东西,但当它再次呈现时,这些标签将被视为html标签,而不是字符串。就像编写>b>测试一样,它被保存为原来的状态,但被渲染为粗体测试否,我想你仍然没有理解我的问题。对于聊天窗口中的ex,如果你写hi单击enter,它将显示为粗体hi,而不是字符串,在数据库中,它仅保存为字符串,但在呈现时,它仅用作标记。你当时没有表达你的问题。我想另存为数据库中包含的格式,但在页面上显示时不使用html或转义html。在这种情况下,您需要查看的是显示函数,而不是文本框条目。但当再次呈现时,这些标记将被视为html标记,而不是字符串。就像编写>b>测试一样,它被保存为原来的状态,但是被渲染为粗体testMmmm我理解,您想要显示代码。您可以使用此功能编辑答案。。。。