JavaScript html setter "eats"文本区域内的前导换行符 - 如何克服?

标签 javascript jquery google-chrome line-breaks

已解决

这个问题以一种棘手的方式解决了。答案已发布below .

<小时/>

我有一个带有 white-space: pre; 样式的文本区域控件,在编辑新内容并将其存储到数据库中时效果非常好(完整,带有 \r\n),并显示为 html 页面的内联部分(在具有相同样式的 div 内)。

当我尝试在弹出对话框中使用 AJAX 响应提供的相同文本区域编辑此类文本时,就会出现问题。我正在尝试通过 jQuery 将接收到的文本分配到文本区域:

$('#textfield').html(text);

实际上,在响应中收到了填充文本区域的整个对话框。

不幸的是,这个 html-setter 删除了前导换行符。有没有办法消除这种不一致的行为?通常会保存内容中进一步出现的换行符。

从服务器接收到的 html 代码示例:

<textarea id="newtext" cols="60" rows="3" style="white-space:pre;">
Text with line break at its start.
More line break</textarea>

将代码通过 html 放入容器后,我得到了这样的结果:

<textarea id="newtext" cols="60" rows="3" style="white-space:pre;">Text with line break at its start.
More line break</textarea>

附注从上下文中添加了更多代码,尽管我认为这可能不会有所帮助:

JavaScript:

var d = $('#dialog');

console.log(msg); // correct data
console.log('==============');

d.html(msg).css({position: "absolute", top: (pos.top + height) + "px", left: (pos.left + width) + "px"});

console.log(d.html()); // corrupted data

d.show();
$('#newtext').focus();

带有容器的 HTML:

<div id="dialog" class="popup">
</div>

更新:

正如@Pointy所建议的,这确实不是jQuery的问题。我将 html-setter 替换为普通的旧版本:

document.getElementById("dialog").innerHTML = msg;

也遇到了同样的问题。浏览器是Chrome。目前无法测试其他浏览器。

最佳答案

如果您实际上使用 <textarea> ,使用 .val 而不是 .html。

编辑 - 如果您在这里或那里插入东西,也许这更接近您的需要......

var textarea = $("<textarea>").val(query);
$(".div-container").append(textarea);
//or, if you're going to replace the one in there
$(".div-container textarea").replaceWith(textarea)

基本上,重点是您可以将带有 jquery 引用的变量分配给文本区域,然后您可以将其放在您需要的任何地方。

关于JavaScript html setter "eats"文本区域内的前导换行符 - 如何克服?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13770317/

相关文章:

javascript - ReferenceError:Chrome 和 Mozilla 中未定义 ActiveXObject

javascript - Chrome 扩展保持弹出窗口加载

Javascript 录音到 MongoDB

javascript - 让 Datepicker 在 cshtml 中工作

javascript - 如何获取draggable中droppable的id?

javascript - 如果当前 url 不包含 location.search 重定向到主页

html - 至少与浏览器 IE 和 Firefox 不兼容

javascript - document.getElementById 对于不同的 "id"值或此代码的替代方案

javascript - 在js sdk中手动设置访问 token

jquery - 像 jQuery 一样的 Flash 网站介绍?