JQuery .html()和.text()在Production中返回空值

时间:2014-01-08 05:16:18

标签: jquery html

我有一个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。

由于

3 个答案:

答案 0 :(得分:5)

在jQuery中,您使用.val()来访问textarea的内容。这就是jQuery的工作原理。您不使用.html().text()。你的解决方案似乎很简单。只需使用.val()

.html().text()会返回原始HTML中的值,这是textarea的初始值,而不是当前键入的值。

http://jsfiddle.net/jfriend00/zV5zM/

答案 1 :(得分: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

答案 2 :(得分:1)

.html()&amp; .text()只会为您提供编码时添加的结果。

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

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

See this fiddle

因此,获得正确值的唯一方法是使用.val()