JQuery .html() 和 .text() 在生产中返回空值
Posted
技术标签:
【中文标题】JQuery .html() 和 .text() 在生产中返回空值【英文标题】:JQuery .html() and .text() returning empty values in Production 【发布时间】:2014-01-26 01:48:48 【问题描述】:我有一个 id 为 posttext 的 textarea。
我正在尝试获取 textarea 的值,但 .html() 和 .text() 在 Production 中总是返回 null。但是 .val() 返回正确的值。我使用 IIS 作为 Web 服务器。
alert($("#posttext").html()); // returns empty
alert($("#posttext").val()); //returns the correct values
alert($("#posttext").text()); // returns empty
当我在本地运行代码时,它运行良好,那么生产中是否有任何设置混乱?有什么办法调试吗?由于它是一个 ajax 加载的表单,我无法在视图源中看到 textarea。
谢谢
【问题讨论】:
jsfiddle.net/eVmQ9/4 试试这个 jsfiddle,用 val 替换 html 就可以了。我不知道为什么它在我的盒子里本地工作。 ***.com/questions/8854288/val-vs-text-for-textarea 感谢链接,我想我会使用 .val() 如果已解决,请接受答案。 所以不让我......我必须等待 【参考方案1】:在 jQuery 中,您使用 .val()
来访问文本区域的内容。这就是 jQuery 的工作原理。您不使用.html()
或.text()
。您的解决方案似乎很简单。只需使用.val()
。
.html()
和 .text()
将原始 HTML 中的值返回给您,这是 textarea 的初始值,而不是当前键入的值。
http://jsfiddle.net/jfriend00/zV5zM/
【讨论】:
textarea 中的 .val() 是否保留所有换行符、行距等,与用户输入的方式完全相同?我将此文本区域用作评论框。 @user636525 - 是的,它保留了输入的内容。这就是它的目的。 @jfriend00 如果稍后动态更新,那么获取 div.id 的 innerhtml 的正确方法是什么?【参考方案2】:这与本地环境或生产环境无关。
问题是这样的:html()
将始终为您提供初始值,val()
将为您提供当前/写入 textarea 中的实际值。看到这个Jsbin Demo
HTML
<textarea id="ta"> This is html of textarea </textarea>
JS
var $t = $('#ta');
console.log($t.html());
$t.val('New html content of textarea');
console.log($t.html()); // This is html of textarea
console.log($t.text()); // This is html of textarea
console.log($t.val()); // New html content of textarea
【讨论】:
【参考方案3】:.html()
& .text()
只会给你在编码时添加的结果。
例如:我在编码时在文本区域之间添加了文本:<textarea name ="editor" id="editBox" rows="5" cols="2">aeflljn</textarea>
。
所以它会显示:aeflljn
。它不会提醒您在文本框中所做的更改。
See this fiddle
所以获得正确值的唯一方法是使用.val()
【讨论】:
以上是关于JQuery .html() 和 .text() 在生产中返回空值的主要内容,如果未能解决你的问题,请参考以下文章
216 jQuery 文本属性值:html() text() val()