c# - 验证阻止自动回发复选框

标签 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,它在自己的验证组中进行了一些验证。如果我关闭窗口并出现任何验证错误,则首先单击任何一个复选框 不做邮包。

只有第一次点击不起作用。下次我点击时一切正常。我尝试将复选框添加到他们自己的验证组中,并将大小写验证更改为 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/

相关文章:

c# - 使用 LINQ 在 C# 中将值和范围绑定(bind)到下拉列表

c# - 在应用程序之间共享数据和通知的最佳实践

c# - Jquery UI - asp.net 上的 Accordion

c# - 如何有效地将一个可观察集合中的范围选择到另一个可观察集合中

javascript - jquery动画没有持续时间

asp.net - 没有详细信息操作的 ASP.MVC 路由

asp.net - 为什么 ASP.NET FormsAuthentication cookie 无法验证用户身份?

c# - 用 C# 编写驱动程序

javascript - 如何找出 Node 进程中的内存泄漏

javascript - 静音 + 自动播放多个 vimeo 视频