你如何在textarea输入中删除html标签

时间:2012-08-18 22:13:47

标签: javascript jquery html css

我已经设置了一个小的Web应用程序,您可以在其中添加post-it到页面。这只是一个帮助更好地学习JavaScript / jQuery的项目,它似乎是一个合适的项目(我是JS / jQuery的新手)。

这是小提琴:http://jsfiddle.net/mitchbregs/mWaPz/

我找到了这个网站:http://www.hscripts.com/scripts/JavaScript/remove-html-tag.php

我实现了代码:

function stripHTML(){
var re = /(<([^>]+)>)/gi;
for (i=0; i < arguments.length; i++)
arguments[i].value=arguments[i].value.replace(re, "")
}

它仍然没有用。

问题:我需要它,以便当有人将文本输入到textarea时,如果他们输入类似“<b>Hi</b>”的内容,它会从输入中删除“<b>”标记并离开文本。

如果有人可以帮助我,那就太棒了..谢谢!

6 个答案:

答案 0 :(得分:12)

var textAreaValue = "text <br /> more text";
var strippedText = $("<div/>").html(textAreaValue).text();​

这是一个Fiddle

答案 1 :(得分:10)

你有三个问题:一个是方法没有正确返回(这是谁编写它的错误)。接下来是您在$(document).ready()中定义方法,因此无法找到它(至少在Chrome中)。第三,你没有以正确的方式称呼它(onSubmit永远不会在这里使用。)

我使用了@ Joao的方法(所以你应该回答他的答案)并使用这个方法,移出ready()函数:

function stripHTML(str){
  var strippedText = $("<div/>").html(str).text();
  return strippedText;
}​

在这里也称之为:

var post = stripHTML($(".text_input").val())

这是工作小提琴:http://jsfiddle.net/ee3MH/

答案 2 :(得分:5)

function stripHTML(text){
   var regex = /(<([^>]+)>)/ig;
   return text.replace(regex, "");
}
// USE: var str = stripHTML('<b>test</b>');

演示: http://jsfiddle.net/pisabev/eJzfw/3/

答案 3 :(得分:0)

你可以使用jquery .text函数,虽然它会转义html而不是剥离它:

$(".myTxtBox").text("<b>this text will be displayed, even the b tag.");

答案 4 :(得分:0)

$("textarea.text_input").on('keyup', function() {
    this.value = this.value.replace(/<(.|\n)*?>/g, '');
});

FIDDLE

答案 5 :(得分:0)

根据OP的要求,没有人成功回答这个问题,因为内部标签将完全从输入中移除,而不仅仅是标签本身;所以,这里的答案正是如此(Fiddle):

var input = "This is <b>not</b>a successful test";
var output = $("<div/>").html(input).children().remove().end().text()