jquery选择器无法从隐藏字段读取

时间:2009-06-15 15:07:42

标签: jquery forms css-selectors element hidden

answers aggregated into another question

以下jquery 1.3.2代码有效:

<input type="select" value="236434" id="ixd" name='ixd' />

<script>
console.log( $('#ixd') );
console.log( $("input[name='ixd']") );
</script>

控制台显示:

  

[输入#ixd 236434]

     

[输入#ixd 236434]

但是,将输入设置为“隐藏”会阻止选择器工作。有线索吗?

<input type="hidden" value="236434" id="ixd" name='ixd' />

<script>
console.log( $('#ixd') );
console.log( $("input[name='ixd']") );
</script>

控制台显示:

  

[]

     

[]

6 个答案:

答案 0 :(得分:27)

不确定为什么会失败。我定期在工作中做同样的事情,无论是否隐藏表格字段,它都有效。

也许试试这个:

<input type="hidden" value="236434" id="ixd" name='ixd' />

<script>
    console.log($("#xid").val())
</script>

这将为您提供隐藏字段的值。要从表单字段中获取值,需要使用.val()方法。

答案 1 :(得分:9)

<input type="select" value="236434" id="ixd" name='ixd' />

这甚至是有效的标记吗?

看起来选择一个可见的输入会检索它的值,即使没有明确地调用.val(),而选择一个隐藏的输入也不会:

尝试:

console.log( $('#ixd').val() );
console.log( $("input[name='ixd'][type='hidden']") );

console.log( $("input[name='ixd']").val() );

答案 2 :(得分:2)

这可能是控制台的一个问题。我跑了一个测试,它似乎仍然抓住了元素的实例。我无法确切地说出你在这里想做什么。

如果您只是想验证是否找到了对象,请检查长度属性

console.log( $('#xid').length );

如果您尝试获取该字段的值,请使用val方法

console.log( $('#xid').val() );

最后,在您的解决方案中,DOM尚未完全加载。确保将逻辑包装在document.ready call中。

$(document).ready(function() {
    console.log( $('#xid').val() );
});

答案 3 :(得分:1)

如果您在ASP.Net中执行此操作,请通过浏览器中的“查看源”选项在运行时检查控件的ID。例如,如果您的控件在内容页面中声明,您可能会发现您的控件ID不是您所期望的。在这种情况下,将为其分配一个由其母版页驱动的ID。您可以使用ASP.Net内联语法引用其ClientID属性,而不是在jQuery中对ID进行硬编码,这也可以保护您免受主或内容页面控件层次结构中的任何更改。

因此...

$('#<%= myHiddenControl.ClientID %>').val();

......比...更好的选择。

$('#ctl00_ContentPlaceHolder1_ctl00_ContentPlaceHolder1_myHiddenControl').val();

......虽然他们都会工作。

答案 4 :(得分:0)

我遇到问题,$('#field_id').val()没有返回任何值,因为隐藏的字段是嵌套的(body > div > form > ul > li > p)。将它移出ul解决了这个问题。

答案 5 :(得分:0)

如果以上工作均无法尝试

$('#xid').attr('value');