所以 - 我有一个复选框

<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"); }
})
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top