我已经得到了我们设置了如下复选框:ASP:复选框如何仅在检查时自动回复?
<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,回发,获取数据并返回。如果该框未被选中,我不想做任何事情,因为在页面上留下足够多的数据是完全正确的(也就是说,预先显示的数据是复选框被选中时显示的数据的子集)。
有什么办法可以让复选框自动回复选中状态,但不会取消选中?
编辑:使用暗隼的建议,我已经修改了复选框的样子:
<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)时,它会传递正确的值,但是它会以某种方式再次被检查。
这不是一个很大的问题,因为真的没有理由不选中该框(因为正如我之前所述,检查时的数据集是未检查的数据集的超集),但我仍然想知道为什么它是这样做。有任何想法吗?
不要紧,你的代码是什么样子的VS设计师。您需要查看浏览器中的标记以确定如何解决问题。 – 2010-01-07 17:24:10
乔希,请参阅我的编辑。我接受了你的建议,在浏览器中查看源代码,它会像这样回来: 你可以看到不知何故checked =“checked”被添加,我觉得它是如何仍然检查,尽管JavaScript返回false。任何想法如何让它不添加检查=“检查”部分? – 2010-01-07 18:57:40
我宁愿建议:取消选中复选框并进行回调,但不提供任何控制。这可以确保您没有不一致的服务器/客户端控制状态。 – citronas 2010-01-07 18:58:17