【问题标题】:Disable some html output in input box禁用输入框中的一些 html 输出
【发布时间】:2014-03-30 15:17:18
【问题描述】:

我有一个像聊天框一样工作的输入。 (用户在输入中输入内容并在页面上输出)。我刚刚注意到用户还可以在我的输入框中使用 html 标签 来更改输出。

示例:如果我输入<b>Hello</b>,输出文本会加粗等等...

我不想完全禁用此功能。但是有些标签我不想输出(例如 h1h2...)。我认为这是可能的正则表达式(虽然不知道如何继续进行),但我觉得可能有一个更简单的解决方案,如果没有,只需投入任何有效的方法。

下面的代码是让我的输入框工作的原因:

$('form').on('submit', function(e){
    e.preventDefault();
    checkValue();
});

function checkValue() {
    var message = document.getElementById("userinput").value;
    $('#output').html(message);
}

谢谢。

【问题讨论】:

标签: jquery html input


【解决方案1】:

看看这是否符合您的需求:

var message = $('<div/>', {
    html: document.getElementById("userinput").value
}).find(':header').remove().end().html(); 

或者您可以使用例如replaceWith(function(){return '&lt;h&gt;'+this.innerHTML+'&lt;/h&gt;';}) 而不是remove()

DEMO jsFiddle

【讨论】:

  • 你还需要让&lt;b&gt;这样的标签在写的时候生效吗?这可能吗?
  • @theonlygusti 在已发布的 jsFiddle 中已经是这种情况:jsfiddle.net/5AVLd 或者我不明白您所说的“对写作生效”是什么意思?
  • 对不起,我错过了。已对您的答案投了赞成票,这是更好的答案。
  • 我可以建议对您的 jsFiddle 进行这些 非常 的细微更改:jsfiddle.net/theonlygusti/WfDqM/1,基本上只是将 h1 包含为文本而不是元素。
  • @WalkOfLife 修复了jsFiddle,你需要使用任何相关的方法来检查:jsfiddle.net/5AVLd/2
【解决方案2】:

您需要在 checkValue 函数中添加另一部分:

function checkValue() {
    var text = document.getElementById("userinput").value;
    var message = text.replace(/<h1>/g,"&#60;h1&#62;");
    $('#output').html(message);
}

查看我如何将所有 h1 元素替换为 escaped characters 和文本 (h1)。

这应该有效,您可以一次又一次地重复它以摆脱所有您不想要的东西,例如

function checkValue() {
    var text = document.getElementById("userinput").value;
    var check = text.replace(/<h1>/g,"&#60;h1&#62;");
    var check2 = check.replace(/<h2>/g,"&#60;h2&#62;");
    var message = check2.replace(/<table>/g,"&#60;table&#62;")
    $('#output').html(message);
}

这里有更多关于替换功能的内容:http://www.w3schools.com/jsref/jsref_replace.asp

这是我在这个网站上找到的另一种方式:

How can I strip certain html tags out of a string?

【讨论】:

  • 您将在这里只替换第一次出现,您应该将正则表达式作为参数传递,而不是字符串。顺便说一句,这不会取代 &lt;h1 style="..."&gt;&lt;/h1&gt; 等...
  • 感谢您指出这一点(第一次出现),已更新我的答案以解决此问题,但将继续努力解决其他问题。
  • 您不应该使用正则表达式来尝试解析 HTML,请参阅:stackoverflow.com/a/590789/1414562
猜你喜欢
  • 2010-09-27
  • 2014-03-18
  • 2017-05-12
  • 2013-01-26
  • 1970-01-01
  • 1970-01-01
  • 2016-05-24
  • 1970-01-01
相关资源
最近更新 更多