【问题标题】:JQuery textarea value is emptyJQuery textarea 值为空
【发布时间】:2013-01-30 22:24:18
【问题描述】:

这类问题往往会立即获得反对票。如果你有答案,请帮忙!谢谢。

我有一个向 dom 添加 textarea 的脚本。当我输入数据并稍后尝试检索它时,该值返回为空。

这样就成功设置了textarea的值:

$("textarea").each(function(){
    $(this).val("ASDFASDF");
});

这样就成功设置了textarea的css背景属性:

$("textarea").each(function(){
    $(this).css({"border":"2px solid red"});
});

但这不会返回值:

$("textarea").each(function(){
    alert($(this).val());
});

我尝试过 .text()、.html()、.value - 它们都没有返回任何内容!它不会警告“未定义”或 null,而只是一个空值。

我不知道为什么。

提前感谢您的建议。

更多信息

HTML 是:

<textarea id="Bio" rows="4"></textarea>

jQuery 库: http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js

函数在dom加载后通过按钮触发。

代码的简化版本在这里: http://social-gamer.com/textarea.html

【问题讨论】:

  • 您在警报中得到了什么?
  • @KrisHollenbeck 看到这一行:It doesn't alert "undefined" or null but simply an empty value.
  • 您的代码在这里可以正常工作:jsfiddle.net/H6PCS
  • 我的错。我错过了。任何控制台错误?
  • 我没有控制台错误。我想知道是不是因为我把这个 textarea 添加到了 dom 中?

标签: jquery


【解决方案1】:

它确实有效,但有其他问题。你可以see it working here

<textarea>Hello One</textarea>
<textarea>Hello One two</textarea>
<textarea>Hello One two three</textarea>

$("textarea").each(function(){
    alert($(this).val());
});
  • 您使用的是什么版本的 jQuery?
  • 您的代码是否在加载 DOM 之前运行?
  • 您的 HTML 是什么样的?您是否为 textarea 分配了 value 属性?这不起作用,请参阅http://jsfiddle.net/2bjLJ/1/

其他说明

当你想调用所有底层对象的方法时,不需要each

$("textarea").each(function(){
    $(this).val("ASDFASDF");
});

$("textarea").each(function(){
    $(this).css({"border":"2px solid red"});
});

也可以

$("textarea").val("ASDFASDF");
$("textarea").css({"border":"2px solid red"});

但是,在阅读时,你必须调用 each,否则你会从 jQuery 集合中的第一个对象中获取值

Working Example

【讨论】:

  • 感谢您的反馈。我知道这真的很基本,应该可以正常工作。这就是为什么它在这里让我大吃一惊。我在ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js 使用JQuery 代码在单击按钮时运行。我使用 .each 因为它需要在多个项目上运行。我对 css 和设置 val 的测试令人沮丧。没有设置 value="" 属性。
  • @MadTurki 每个都不需要,当你调用 setter 方法时,它会完全按照你的循环正在做的事情......请发布你的 HTML
  • @MadTurki,我去了你的页面,在文本框中输入了一些内容,并显示了带有文本的警报
  • 你是完全正确的......那么我剪掉了什么使它起作用。我会继续寻找!
  • 感谢胡安的帮助。请看我在这里发布的答案......呃!
【解决方案2】:

问题最终是 ID 重复。通常我会先检查这个,但我什至没有通过它的 ID 访问元素,而只是通过输入类型“textarea”。

因此,即使按类或仅按其在 DOM 中的位置定位元素,如果它具有重复的 ID,它也会失败。我之前并没有真正考虑过这么多,因为我不是通过 ID 获得的!

【讨论】:

  • 我正要猜测,因为你的文本区域的 HTML 确实包含一个 ID。我猜 jQuery 按 ID 保存对象映射?
  • 我认为您还没有解决问题,具有相同 ID 的多个元素可以正常工作(不是您应该使用它)。 jsfiddle.net/2bjLJ/3
【解决方案3】:

你好吗,

听着,TextArea 是唯一一个不使用 val() 获取和设置值的输入,因为当您将值放在 textarea 上时,您将放在标签内。

有一个例子

<textarea>Inside is the content so to 
get the content inside of tags you use HTML or TEXT</textarea>

因此,当您尝试获取数据时,您必须这样做:

$('textarea').text();

设置文本区域的数据是这样的:

$('textarea').text("HERE'S THE CONTENT.");

这是一个小提琴,你可以看到我在说什么

http://jsfiddle.net/nfTVJ/

祝你好运,再见

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-15
    • 1970-01-01
    • 1970-01-01
    • 2013-10-11
    • 2021-12-25
    • 2011-12-16
    相关资源
    最近更新 更多