我的页面上有以下复选框:
<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,它在自己的验证组中进行了一些验证。如果我关闭窗口并出现任何验证错误,则首先单击任何一个复选框 不做邮包。
只有第一次点击不起作用。下次我点击时一切正常。我尝试将复选框添加到他们自己的验证组中,并将大小写验证更改为 true。但行为却是完全一样的。当我将测试 javascript 方法添加到该复选框的 onclick 时,会毫无问题地触发该方法。只是没有回发。
我还尝试在窗口关闭时重置窗口验证组的所有验证器,它们已重置,但行为未检查,并且第一次单击不起作用。
更新:
我又做了一项检查,并意识到只有在 javascript 中这样做时才会发生这种情况:
window.Page_ClientValidate("MyGroup")
在弹出窗口上进行一些计算之前我必须要做的事情。 在动态验证器期间,当更新可验证控件时,即使验证失败,一切都正常工作。所以问题是 *Page_ClientValidate*
最佳答案
我知道这是一个老问题,但我遇到了几乎完全相同的问题,并且通过以下链接我能够解决该问题:
Issue with postbacks and clicking on controls twice
我最终将此代码添加到我的代码后面,为复选框的单击事件添加 JavaScript 事件处理程序:
Checkbox1.Attributes.Add("onclick", "checkboxChanged();");
然后我添加了以下 JavaScript:
function checkboxChanged(arg1) {
Page_BlockSubmit = false;
}
在我的情况下,复选框也设置为 CausesValidation 设置为 false,但我认为此修复不需要这样做。希望这对某人有帮助。
关于c# - 验证阻止自动回发复选框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11773633/