为什么在FF3中仍然选中复选框,但在IE,Chrome或

时间:2008-10-16 13:58:19

标签: javascript jquery asp.net checkbox

所以 - 我有一个复选框

<asp:CheckBox ID="chkOrder" runat="server" Visible='<%#IsCheckBoxVisible() %>' 
     Checked="false"
     OnCheckedChanged="chkOrder_CheckedChanged" AutoPostBack="true" 
     EnableViewState="false"></asp:CheckBox>

上面的一个。现在,复选框位于gridview和数据绑定中 - 对于gridview中的所有行,复选框设置为false。问题是第一个复选框仍然是真实的。

在IE中,问题不存在,Chrome也是如此。我的选择已经用完了。 如果我使用

$("checkboxName").attr("checked"); // verified on jquery ready function.

在FF中这是真的; IE错误; Chrome错误。

任何提示?

修改

现在为此做好准备:在生成的html中 - 没有检查属性。 FF和IE之间的差异完全相同

另一件事 - 包含复选框的网格上有一个ajax面板,当我打开网格时,尝试转到第2页 - 触发codeBhind中的checkedChanged。

7 个答案:

答案 0 :(得分:16)

Firefox默认会记住表单字段的状态。 Ctrl+F5将强制Firefox清除此缓存。

您可以为单个表单和输入元素禁用此选项:

<form autocomplete="off"> 

<input ... autocomplete="off" /> 

答案 1 :(得分:6)

如果您不希望选中此复选框,则应完全省略“已检查”属性,因为检查是由checked属性的状态触发的,而不是其值:

  

复选框(和单选按钮)是可由用户切换的开/关开关。 当设置了控制元素的checked属性时,开关处于“打开”状态。

http://www.w3.org/TR/html401/interact/forms.html#checkbox

对我来说,以下标记产生一个复选框,在IE,Firefox和Opera中检查,正如您所期望的那样基于规范:

<input type="checkbox" checked="false">

答案 2 :(得分:4)

在我最近做的一些PHP编码中,我注意到即使在F5页面刷新之后,FF3也记住了我检查的内容。查看源代码显示了我想要生成的正​​确HTML。要解决此问题,请转到地址栏并再次强制请求页面。

为什么这个工作是必要的我不确定,但从正常的可用性角度来看,我很感激它,而不是在开发过程中。

答案 3 :(得分:1)

这揭示了一个带有复选框的有趣怪癖。这里有一些非常简单的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>

答案 4 :(得分:0)

您是否尝试比较FF和IE的生成HTML? (使用“查看html源代码”)

只是为了更准确地定位问题。 这只是一个小小的机会,但如果两个浏览器的HTML不同,那么在服务器端就会出现ASP创建HTML的问题。

如果两者相同,并且完全HTML投诉,您在FF中发现了错误

答案 5 :(得分:0)

在FireFox 3中也会出现这种情况,如果您使用所述框来运行AJAX /更新页面,这可能是一个很大的痛苦。

如果用户刷新页面或做一些后退按钮怪异,他们最终可能仍然选择了选择框,但实际上必须取消选择并重新选择才能重新运行AJAX。

在这种情况下,我发现使用body onunload事件来清除任何选择/复选框“解决”“问题”。

答案 6 :(得分:0)

$("input[id$=chkOrder]").click(function() {        
    if (!$(this).attr("checked")) { $(this).removeAttr("checked"); }
    else { $(this).attr("checked", "checked"); }
})