IE 中的隐藏字段被视为禁用?
通过下面的示例页面,我得到的 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 (8.0.7600.16385),输出为“text1text2”,对于 Chrome (10.0.648.127) 和 Firefox (3.6.13),输出为“hidden1hidden2text1text2”。这出乎我的意料。这是 IE 或 jQuery 中的错误,还是只是 jQuery 没有考虑到的浏览器中的预期差异?
IE 中的隐藏字段是否总是带有隐式“禁用”?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
FF 和 Chrome 似乎假设,即使某个元素被隐藏,如果它没有被禁用,它也会被认为是启用的。在 IE 中,似乎没有做出假设,并且隐藏输入既不被视为启用或禁用。 $('input:enabled') 或 $('input:disabled') 都不会在 IE 中使用隐藏元素运行:
此处进行简单测试: http://jsfiddle.net/KFu4t/4/
FF 和 Chrome 都将输入显示为已启用,但 IE 不会显示它已启用或已禁用。
:enabled 的 jQuery 注释中指出:
http://api.jquery.com/enabled-selector/
It seems that FF and Chrome assume that even if an element is hidden if it is not disabled it is considered enabled. In IE it seems that assumption is not made and the hidden input is neither considered enabled or disabled. Neither $('input:enabled') or $('input:disabled') runs with hidden elements in IE:
Simple test here: http://jsfiddle.net/KFu4t/4/
Both FF and Chrome show the input as enabled but IE doesn't show it enabled OR disabled.
It is noted on the jQuery comments for :enabled that:
http://api.jquery.com/enabled-selector/
将此行:更改
为:
change this line:
to: