Javascript 为什么FF3中的复选框保持选中状态,而IE、Chrome或

Javascript 为什么FF3中的复选框保持选中状态,而IE、Chrome或,javascript,jquery,asp.net,checkbox,Javascript,Jquery,Asp.net,Checkbox,所以-我有一个复选框 <asp:CheckBox ID="chkOrder" runat="server" Visible='<%#IsCheckBoxVisible() %>' Checked="false" OnCheckedChanged="chkOrder_CheckedChanged" AutoPostBack="true" EnableViewState="false"></asp:CheckBox> 在FF中,

所以-我有一个复选框

<asp:CheckBox ID="chkOrder" runat="server" Visible='<%#IsCheckBoxVisible() %>' 
     Checked="false"
     OnCheckedChanged="chkOrder_CheckedChanged" AutoPostBack="true" 
     EnableViewState="false"></asp:CheckBox>
在FF中,这是真的;即假;错

有什么建议吗

编辑

现在做好准备:在生成的html中,没有选中的属性。 FF和IE之间的差异是完全相同的


另一件事-包含复选框的网格上有一个ajax面板,当我对网格进行分页时,尝试转到第2页-将触发checkedChanged in codebehind。

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

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

如果两者相同,并且您在FF中发现了一个bug,

如果您不希望复选框被选中,您应该完全忽略“checked”属性,因为选中是由存在
checked
属性而不是其值触发的:

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

对我来说,以下标记生成了一个复选框,该复选框在IE、Firefox和Opera中被选中,正如您根据规范所期望的那样:

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

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


为什么这项工作是必要的,我不确定,但从正常的可用性角度来看,我很欣赏它,只是在开发过程中没有。

这也发生在Firefox3中的选择框上,如果使用所述框来运行AJAX/更新页面,这可能是一个很大的痛苦

如果用户刷新了页面或执行了一些后退按钮的奇怪操作,那么最终选择框仍然处于选中状态,但实际上必须取消选择并重新选择才能重新运行AJAX


在本例中,我发现使用body onunload事件清除任何选择/复选框“解决”了“问题”。

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

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

<form autocomplete="off"> 

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

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

如果(cb.checked==true)
文件。写入(“这是延迟的”);

你完全正确。。。FF正在回忆一些东西:|我正在做一个window.location.reload()。现在window.location=window.location:)。谢谢。根据规格,你不应该期望有什么。选中属性的唯一有效值为“选中”。如果您指定“false”,则您将进入未指定的区域。否,根据规范,因为存在“checked”属性,所以应该对其进行检查。根据规范:“checked(checked)”-存在“checked”属性,它接受值“checked”。另见
$("input[id$=chkOrder]").click(function() {        
    if (!$(this).attr("checked")) { $(this).removeAttr("checked"); }
    else { $(this).attr("checked", "checked"); }
})
<html>
<body>

<input type="checkbox" checked="false" id="cb" />

<script language="javascript">
if (cb.checked == true)
  document.write('this is retarded');
</script>

</body>
</html>