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, "&lt;");
}
示例客户端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, "&amp;")
      .replace(/</g, "&lt;")
      .replace(/>/g, "&gt;")
      .replace(/"/g, "&quot;")
      .replace(/'/g, "&#039;");
}

是的,但是使用regex以外的东西可能会更好,比如jQuery查询整个内容。jquery html解释器>任何你自己的东西。然后你可以对白名单上的标签进行高级处理,并在提交过程中使用结果。是的,我只使用这种类型的东西,但当它再次呈现时,这些标签将被视为html标签,而不是字符串。就像编写>b>测试一样,它被保存为原来的状态,但被渲染为粗体测试否,我想你仍然没有理解我的问题。对于聊天窗口中的ex,如果你写hi单击enter,它将显示为粗体hi,而不是字符串,在数据库中,它仅保存为字符串,但在呈现时,它仅用作标记。你当时没有表达你的问题。我想另存为数据库中包含的格式,但在页面上显示时不使用html或转义html。在这种情况下,您需要查看的是显示函数,而不是文本框条目。但当再次呈现时,这些标记将被视为html标记,而不是字符串。就像编写>b>测试一样,它被保存为原来的状态,但是被渲染为粗体testMmmm我理解,您想要显示代码。您可以使用此功能编辑答案。。。。