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() 只会给你在编码时添加的结果。

例如:我在编码时在文本区域之间添加了文本:&lt;textarea name ="editor" id="editBox" rows="5" cols="2"&gt;aeflljn&lt;/textarea&gt;

所以它会显示:aeflljn。它不会提醒您在文本框中所做的更改。

See this fiddle

所以获得正确值的唯一方法是使用.val()

【讨论】:

以上是关于JQuery .html() 和 .text() 在生产中返回空值的主要内容,如果未能解决你的问题,请参考以下文章

216 jQuery 文本属性值:html() text() val()

jQuery的html()text()和val()的使用和区别

jQuery源码html,text,val

JQuery中的html(),text(),val()区别

jQuery之html(),text()和val()的区别

jQuery之html(),text()和val()的区别