【问题标题】:Getting undefined while using $(.className).val()使用 $(.className).val() 时未定义
【发布时间】:2015-03-30 09:45:17
【问题描述】:

我在使用 $(.className).val() 但 $(.className) 返回 Object 时变得未定义。请建议我如何获取 jquery 中文本字段的值。

下面是代码sn-p。

$(document).ready(function() {
   alert($(".className").val());
});

<h:textField value="#{bean.firstName}" id="fiestName" class="className"/>

【问题讨论】:

  • 您确定该文本字段已分配了一个值并且其类定义为“className”吗?
  • 你能提醒alert($(".className").length); - 看起来当脚本执行时文本字段尚未添加到dom - 可能是动态创建的
  • 我认为您还有另一个具有相同类名的元素 className 。保持唯一或使用 ID 选择器。
  • stackoverflow.com/help/mcve&lt;h:textField&gt; 不存在。
  • @chsdk:只要OP尊重并理解stackoverflow.com/help/how-to-askstackoverflow.com/help/mcve,问题就没有问题。现在根据目前提供的信息无法排除的可能原因太多了.代码 sn-p 的上下文完全丢失,并且代码 sn-p 本身是不小心准备的(当复制粘贴到一个完全空白的沙盒项目中且所有内容都设置为默认值时,根本不会运行)。这正是 OP 必须提供真正的 MCVE 的原因。否则这个问题简直就是浪费时间。

标签: jquery css jsf


【解决方案1】:

class 属性替换为 jsf 定义的标记属性中的 styleClass

<h:textField value="#{bean.firstName}" id="fiestName" styleClass="className"/>

【讨论】:

  • 我只使用 styleClass="className",结果还是一样。
  • 似乎是对唯一性的关注。类名选择器基本上返回一个需要使用 $(".className").each(function(key,value){}); 进行迭代的集合。使用计数器变量访问第一个元素(如果使用此类的页面上只有一个这样的 DOM 元素,它显然是第一个元素。
  • 谢谢Devanshu Kashyap,你能解释一下如何选择它的第一个元素吗??
【解决方案2】:

我认为最好使用 id 作为触发器来获取文本字段的值,因为 id 是唯一的,而 class 不是。

在我的建议代码下方(更改警报内的选择器):

$(document).ready(function() {
   alert($("#fiestName").val());
});

<h:textField value="#{bean.firstName}" id="fiestName" class="className"/>

【讨论】:

  • 我正在使用唯一的类名。我不能使用 ID,因为它的值在 html 中已更改(父元素添加了:)
【解决方案3】:

用一个函数来做,或者把你的jquery写下html代码

<h:textField value="#{bean.firstName}" id="fiestName" class="className"/>
 $(document).ready(function() {
 alert($(".className").val());
  });

【讨论】:

    猜你喜欢
    • 2011-03-03
    • 1970-01-01
    • 1970-01-01
    • 2021-09-06
    • 2016-12-01
    • 2013-12-25
    • 2017-10-08
    • 1970-01-01
    • 2010-11-08
    相关资源
    最近更新 更多