Jquery IE中的隐藏字段是否被视为已禁用?

Jquery IE中的隐藏字段是否被视为已禁用?,jquery,internet-explorer,cross-browser,hidden-field,Jquery,Internet Explorer,Cross Browser,Hidden Field,在下面的示例页面中,IE的输出与其他浏览器的输出不同 <html> <head> <title>hidden fields test</title> <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script> </head> <b

在下面的示例页面中,IE的输出与其他浏览器的输出不同

<html>
<head>
    <title>hidden fields test</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.4.4/jquery.min.js" type="text/javascript"></script>
</head>
<body>
    <form>
        <input type="hidden" value="hidden1" />
        <input type="hidden" value="hidden2" />
        <input type="text" value="text1" />
        <input type="text" value="text2" />
    </form>
    <script type="text/javascript">
        $(function() {
            var inputs = $("form input:enabled");
            var concatenated = '';
            inputs.each(function() {
                concatenated = concatenated + $(this).val();
            });

            alert(concatenated);
        });
    </script>
</body>
</html>
IE 8.0.7600.16385的输出为text1text2,Chrome 10.0.648.127和Firefox 3.6.13的输出为hidden1hidden2text1text2。这对我来说是出乎意料的。这是IE或jQuery中的一个bug,还是jQuery没有考虑的浏览器中的预期差异

IE中的隐藏字段是否始终带有隐式禁用?

更改此行:

var inputs = $("form input:enabled");
致:

更改此行:

var inputs = $("form input:enabled");
致:


FF和Chrome似乎认为,即使某个元素是隐藏的,但如果该元素未被禁用,它也会被视为已启用。在IE中,似乎没有做出假设,隐藏的输入也没有被认为是启用或禁用的。$'input:enabled'或$'input:disabled'在IE:

简单测试如下:

FF和Chrome都会将输入显示为已启用,但IE不会将其显示为已启用或已禁用

启用的jQuery注释中指出:

文档中没有明确说明,但这似乎不包括隐藏类型的输入


FF和Chrome似乎认为,即使某个元素是隐藏的,但如果该元素未被禁用,它也会被视为已启用。在IE中,似乎没有做出假设,隐藏的输入也没有被认为是启用或禁用的。$'input:enabled'或$'input:disabled'在IE:

简单测试如下:

FF和Chrome都会将输入显示为已启用,但IE不会将其显示为已启用或已禁用

启用的jQuery注释中指出:

文档中没有明确说明,但这似乎不包括隐藏类型的输入


你还没有给它们加上名称属性-这可能值得一试?@Craig:我尝试过给它们加上名称,但结果相同。你会注意到jQuery UI隐藏输入以实现跨浏览器兼容性的方式是使用一个名为UI helper hidden accessible的类对它们进行剪切。这是由于你描述的行为。如果您需要复制它,请查看的顶部布局帮助程序部分。您还没有在它们上添加名称属性-这可能值得一试?@Craig:我尝试向它们添加名称,但结果相同。您会注意到jQuery UI隐藏输入以实现跨浏览器兼容性的方式是通过使用名为UI helper hidden Access的类对其进行剪裁。这是由于你描述的行为。如果您需要复制它,请查看的顶部布局帮助部分。他是否仅尝试启用控件?也许还有另一种方法可以做到这一点。谢谢你,使用:not:disabled可以实现浏览器间的一致性。但根据Jeremy的回答,这似乎是运气使然,根据IE如何看待隐藏字段。我很好奇IE9是做什么的。他不是只想启用控件吗?也许还有另一种方法可以做到这一点。谢谢你,使用:not:disabled可以实现浏览器间的一致性。但根据Jeremy的回答,这似乎是运气使然,根据IE如何看待隐藏字段。我很好奇IE9是做什么的。