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>