不应该保留文本区域数据吗?
我在表单中有一个textarea:
<form action="#" id="container">
<textarea id="txt" cols="100" rows="5">Good bye</textarea>
</form>
我想要的就是用div替换这个表单:
$("#container").replaceWith(function() {
return "<div>" + $(this).html() + "</div>";
});
这有效没有任何问题,但是如果我在使用 replaceWith 方法之前更改 textarea 值:
$("#txt").val("hello world");
最终内容是 div 内的 textarea ,其中包含“再见”文本,而不是预期的“你好世界”。您有一个演示。
为什么会发生这种情况?如何用保留文本区域内容的 div 替换 form?
I have a textarea inside a form:
<form action="#" id="container">
<textarea id="txt" cols="100" rows="5">Good bye</textarea>
</form>
All I want is to replace this form by a div:
$("#container").replaceWith(function() {
return "<div>" + $(this).html() + "</div>";
});
That works without any problem, but if I before to use the replaceWith method change the textarea value:
$("#txt").val("hello world");
The final content is a textarea inside the div with the "Good bye" text, not the "hello world" as expected. You have a demo here.
Why is this happening? How can I replace the form by a div preserving textarea contents?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
.val()
正在更改文本区域的值(意味着提交表单时发送的数据),不一定是其内部文本/HTML.. 为此,请使用.html()
相反:更新了 jsFiddle。
The
.val()
is changing the value of the textarea (meaning the data sent when form is submitted), not necessarily its inner text/HTML.. to do so use.html()
instead:Updated jsFiddle.
这有效:
问题是用
.html() 序列化 html 时出现的.使用 DOM 节点工作要好得多。这也将保留事件处理程序。
这是另一种方法:
This works:
The issue come with serializing the html with
.html()
. It's much better to work in terms of DOM Nodes. This'll also preserve event handlers.Here's another way:
试试这个,(使用
.html()
代替)(html()
在文本区域内插入值,.val()
不会)http://jsfiddle.net/kRGqR/5/
Try this one, (use
.html()
instead) (html()
inserts value INSIDE that textarea,.val()
doesn't)http://jsfiddle.net/kRGqR/5/