0

I need to stop user from inserting HTML tags while inserting text in the textbox, if user enters a text like <b>test</b> this should be consider as string completely, not as test. For ex : We do here in StackOverflow, when we select the option of 'code sample'

Any suggestions.

Edit: Here, I am able to save the string in <b>test</b> code format only, but when it is getting displayed, these tags are rendering as HTML tags, that is the text is getting bold.

4

2 回答 2

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;");
}
于 2013-10-15T10:21:42.033 回答
0

你不能真正阻止用户做愚蠢的事情。

  • 您可以在他键入时添加检测以指示错误/或替换文本(使用正则表达式)
  • 您可以添加“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 的变体 ..或者只是在服务器端进行

于 2013-10-15T10:18:12.490 回答