我有一个设置如下的复选框:
<asp:CheckBox ID="myCheckbox" runat="Server" OnClick="showLoadingScreen(this.checked);" AutoPostBack="true" Text="Check me for more data!" />
showLoadingScreen 函数如下:
function showLoadingScreen(isChecked) {
if (isChecked)
{
document.getElementById('form1').style.display='none';
document.getElementById('img_loading').style.display='block';
}
else { return false; }
}
我添加了 else 子句,希望仅在选中复选框时才能将其发回,但在任何一种情况下都会发回。
我在页面上有一个网格(在 form1 内),它在页面加载时加载了一组数据,但是为了向它添加一些额外的数据,我添加了这个复选框(它是一个运行时间较长的过程,所以我只想按需加载,而不是预先加载)。当它被选中时,我想显示加载 gif、回发、抓取数据并返回。如果该框未被选中,我不想做任何事情,因为在页面上留下足够多的数据是完全可以的(也就是说,预先显示的数据是选中复选框时显示的数据的子集)。
有什么办法可以使复选框自动回复选中,而不是未选中?
编辑:使用 Dark Falcon 的建议,我将复选框修改为:
<asp:CheckBox ID="myCheckbox" runat="Server" OnClick="return showLoadingScreen(this.checked);" AutoPostBack="true" Text="Include HQ Values" />
而javascript是:
function showLoadingScreen(checked) {
alert(checked);
if (checked)
{
document.getElementById('form1').style.display='none';
document.getElementById('img_loading').style.display='block';
document.form1.submit(); //my own addition, to get it to post back
}
else { return false; }
}
现在,它在选中后重新发布,但该框不能再取消选中。如您所见,我添加了一个警报以显示传入的值。当您取消选中该框(false)时,它传入了正确的值,但随后又以某种方式再次被选中。
这不是一个大问题,因为真的没有理由取消选中该框(因为正如我之前所说,选中时的数据集是未选中数据集的超集),但我仍然想知道它为什么这样做。有任何想法吗?