验证禁止复选框自动回发

时间:2012-08-02 08:24:45

标签: c# javascript asp.net validation

我的页面上有以下复选框:

<asp:CheckBox ID="rbBuilding" runat="server" AutoPostBack="True" OnCheckedChanged="HandlerPackageOnCheckedChanged" Checked="True" CausesValidation="False"   />
<asp:CheckBox ID="rbContent" runat="server" AutoPostBack="True" OnCheckedChanged="HandlerPackageOnCheckedChanged" CausesValidation="False" />

基于点击的复选框组合,回发上有一个逻辑。除了一个案例外,一切都很好:

我正在打开额外的telerik radwindow,它在自己的验证组中进行了一些验证。如果我关闭窗口时出现任何验证错误,那么首先单击任何一个复选框 不做postpack。

只有第一次点击无效。下次我点击一切正常。我试图将复选框添加到他们自己的验证组并将套管验证更改为true。但行为完全一样。当我为该复选框添加测试javascript方法onclick时,这个方法被解雇没有问题。没有回发。

我还尝试在窗口关闭时重置窗口验证组的所有验证器,它们被重置,但行为没有检查,并且第一次单击不起作用。

更新

我再做了一次检查并意识到只有在javascript中才会发生这种情况:

window.Page_ClientValidate("MyGroup")

在弹出窗口进行一些计算之前我必须做的事情。 在动态验证器期间,更新可验证控件时,即使验证失败,eveything也能正常工作。所以问题是* Page_ClientValidate *

1 个答案:

答案 0 :(得分:2)

我知道这是一个老问题,但我遇到了几乎所有问题,并且由于以下链接,我能够解决问题:

Issue with postbacks and clicking on controls twice

我最后将此代码添加到我的代码后面,为复选框的点击事件添加了一个javascript事件处理程序:

Checkbox1.Attributes.Add("onclick", "checkboxChanged();");

然后我添加了以下javascript:

function checkboxChanged(arg1) {
  Page_BlockSubmit = false;
}

我的情境中的复选框也设置为将CausesValidation设置为false,但我不认为此修复程序需要这样做。希望这有助于某人。