2

所以 - 我有一个复选框

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

上面那个。现在,该复选框位于网格视图中并且在数据绑定中 - 对于网格视图中的所有行,该复选框都设置为 false。问题是第一个复选框仍然被选中。

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

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

在 FF 中是真的;即错误;铬错误。

有小费吗?

编辑

现在为此做好准备:在生成的 html 中 - 没有选中的属性。FF 和 IE 的区别是完全一样的

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

4

7 回答 7

16

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

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

<form autocomplete="off"> 

<input ... autocomplete="off" /> 
于 2008-10-16T15:52:48.930 回答
6

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

复选框(和单选按钮)是可以由用户切换的开/关开关。当设置控制元素的选中属性时,开关为“on”

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

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

<input type="checkbox" checked="false">
于 2008-10-16T14:12:35.217 回答
4

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

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

于 2008-10-16T14:23:45.897 回答
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>
于 2011-03-22T15:22:19.100 回答
0

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

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

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

于 2008-10-16T14:05:18.023 回答
0

FireFox 3 中的选择框也会发生这种情况,如果您使用该框来运行 AJAX/更新页面,这可能会很痛苦。

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

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

于 2008-10-16T15:52:23.957 回答
0
$("input[id$=chkOrder]").click(function() {        
    if (!$(this).attr("checked")) { $(this).removeAttr("checked"); }
    else { $(this).attr("checked", "checked"); }
})
于 2010-04-21T22:12:03.680 回答