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

( 答案汇总到另一个问题 )

以下jquery 1.3.2代码有效:

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

控制台显示:

[输入#ixd 236434]

[输入#ixd 236434]

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

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

控制台显示:

[]

[]

不知道为什么会失败。 我定期在工作中做同样的事情,无论是否隐藏forms字段,它都能正常工作。

也许尝试这个:

   

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

  

这甚至是有效的标记吗?

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

尝试:

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

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

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

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

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

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

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

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

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

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

所以…

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

……比…更好的选择

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

……虽然他们都会工作。

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

如果以上工作都没有尝试

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