为什么复选框在 FF3 中保持选中状态,但在 IE、Chrome 或
-
03-07-2019 - |
题
所以 - 我有一个复选框
<asp:CheckBox ID="chkOrder" runat="server" Visible='<%#IsCheckBoxVisible() %>'
Checked="false"
OnCheckedChanged="chkOrder_CheckedChanged" AutoPostBack="true"
EnableViewState="false"></asp:CheckBox>
上面那个。现在,该复选框位于 gridview 中并在数据绑定上 - 对于 gridview 中的所有行,该复选框都设置为 false。问题是第一个复选框仍然是 true 选中的。
在 IE 中不存在这个问题,对于 Chrome 也是如此。我已经没有选择了。另外如果我使用
$("checkboxName").attr("checked"); // verified on jquery ready function.
在 FF 中确实如此;IE 错误;铬假。
有小费吗?
编辑
现在为此做好准备:在生成的 html 中 - 没有检查属性。FF和IE的区别是 一模一样.
另一件事 - 包含复选框的网格上有一个 ajax 面板,当我分页网格时,尝试转到第 2 页 - 代码隐藏中的checkedChanged 被触发。
解决方案
在我最近做的一些 php 编码中,我注意到 FF3 会记住我检查过的内容,即使在 F5 页面刷新之后也是如此。查看源代码显示了我想要生成的正确 HTML。要解决此问题,请转到地址栏并再次强制请求该页面。
我不确定为什么需要解决这个问题,但从正常可用性的角度来看,我很欣赏它,只是在开发过程中没有。
其他提示
Firefox默认会记住表单字段的状态。 Ctrl + F5
将强制Firefox清除此缓存。
您可以为单个表单和输入元素禁用此选项:
<form autocomplete="off">
<input ... autocomplete="off" />
您应该省略“已检查”如果您不希望选中复选框,则完全属性,因为检查是由 checked
属性的 presence 触发的,而不是其值:
复选框(和单选按钮)是可由用户切换的开/关开关。 开关是“打开”的当控制元素的checked属性设置为时。
http://www.w3.org/TR/html401/相互作用/ forms.html#复选框
对我来说,以下标记产生一个复选框,在IE,Firefox和Opera中检查,正如您所期望的那样基于规范:
<input type="checkbox" checked="false">
这揭示了一个带有复选框的有趣怪癖。这里有一些非常简单的html我想出来真正总结一下:
<html>
<body>
<input type="checkbox" checked="false" id="cb" />
<script language="javascript">
if (cb.checked == true)
document.write('this is retarded');
</script>
</body>
</html>
您是否尝试比较FF和IE的生成HTML? (使用“view html source”)
只是为了更准确地定位问题。 这只是一个小小的机会,但如果两个浏览器的HTML不同,那么在服务器端就会出现ASP创建HTML的问题。
如果两者相同,并且完全HTML投诉,您在FF中发现了错误
在FireFox 3中也会出现这种情况,如果您使用所述框来运行AJAX /更新页面,这可能是一个很大的痛苦。
如果用户刷新页面或做一些后退按钮怪异,他们最终可能仍然选择了选择框,但实际上必须取消选择并重新选择才能重新运行AJAX。
在这种情况下,我发现使用body onunload事件清除任何select / checkboxes“solves” “问题”。
$("input[id$=chkOrder]").click(function() {
if (!$(this).attr("checked")) { $(this).removeAttr("checked"); }
else { $(this).attr("checked", "checked"); }
})