在dblclick - DIV替换为TEXTAREA。您可以编辑文本。
模糊 - 将TEXTAREA替换为DIV。新行将替换为“< br />”。
第一个问题 - 位于已修改的文字中 - “< br />”不像文本中的突破或新行,而是像文本“< br />”。如何解决?
第二个问题 - 有一个“< br />”在例子中。当你第一次在示例中编辑文本时,这个“< br />”不会更改为新行,而只会更改为简单空格(& nsbp; )。当您第一次尝试编辑原始文本时,为什么会出现此错误?
HTML
<div id="meText">Click to edit <br /> this text.</div>
的jQuery
$(function(){
$("#meText").live('click',function(){
var originalDiv = this;
$(this).replaceWith($("<textarea></textarea>").text($(this).text().replace(/<br\s?\/?>/g,"\n")).width($(this).width()).height($(this).height()).blur(function(){$(this).replaceWith($(originalDiv).text($(this).val().replace(/\r\n|\r|\n/g,"<br />")));}));
});
});
答案 0 :(得分:2)
尝试。 html ()而不是。文字()并更改替换,如
$(function(){
$("#meText").on('click',function(){
var originalDiv = this;
$(this).replaceWith($("<textarea></textarea>").html($(this).text().replace(/\n/g, "<br />")));
});
});
请参阅此LINK。您可以将宽度和高度添加到此
答案 1 :(得分:1)
请使用以下代码
$(this).replaceWith($("<textarea></textarea>").text($(this).html().replace(/<br\s?\/?>/g,"\n")).width($(this).width()).height($(this).height()).blur(function(){$(this).replaceWith($(originalDiv).html($(this).val().replace(/\r\n|\r|\n/g,"<br />")));}));
你正在使用一些地方text()而不是html()。如果我们使用text()它会消除html标签