我有一个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。
由于
答案 0 :(得分:5)
在jQuery中,您使用.val()
来访问textarea的内容。这就是jQuery的工作原理。您不使用.html()
或.text()
。你的解决方案似乎很简单。只需使用.val()
。
.html()
和.text()
会返回原始HTML中的值,这是textarea的初始值,而不是当前键入的值。
答案 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
。它不会提醒您在文本框中所做的更改。
.val()