【问题标题】:JQuery .html() and .text() returning empty values in ProductionJQuery .html() 和 .text() 在生产中返回空值
【发布时间】: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。

谢谢

【问题讨论】:

标签: jquery html


【解决方案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()

    【讨论】:

      猜你喜欢
      • 2014-07-31
      • 2011-09-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多