【问题标题】:How do you clear a CustomValidator Error on a Button click event?如何清除按钮单击事件中的 CustomValidator 错误?
【发布时间】:2010-04-29 01:50:12
【问题描述】:

我有一个用于输入日期的复合用户控件:

CustomValidator 将包含服务器端验证代码。如果用户以任何方式更改日期值,我希望通过客户端脚本清除错误消息。为此,我包含以下代码以将两个下拉菜单和年份文本框连接到验证控件:

<script type="text/javascript">
    ValidatorHookupControlID("<%= ddlMonth.ClientID%>", document.getElementById("<%= CustomValidator1.ClientID%>"));
    ValidatorHookupControlID("<%= ddlDate.ClientID%>", document.getElementById("<%= CustomValidator1.ClientID%>"));
    ValidatorHookupControlID("<%= txtYear.ClientID%>", document.getElementById("<%= CustomValidator1.ClientID%>"));
</script>

但是,我还希望在用户单击清除按钮时清除验证错误。当用户单击清除按钮时,其他 3 个控件将被重置。为了避免回发,Clear 按钮是一个常规的 HTML 按钮,带有一个重置 3 个控件的 OnClick 事件。不幸的是,ValidatorHookupControlID 方法似乎不适用于 HTML 控件,因此我想将 HTML Button 更改为 ASP 按钮,并改为 Hookup 到该控件。但是,我似乎无法消除默认情况下与 ASP 按钮控件关联的回发功能。我尝试将 UseSubmitBehavior 设置为 False,但它仍然提交。我试图在我的 btnClear_OnClick 客户端代码中返回 false,但是发送到浏览器的代码在我调用之后包含了一个 DoPostback 调用。

btnClear.Attributes.Add("onClick", "btnClear_OnClick();")

我没有添加 OnClick 代码,而是尝试覆盖它,但 DoPostBack 代码仍然包含在发送到浏览器的最终代码中。

我必须做些什么才能让 Clear 按钮在单击时清除 CustomValidator 错误并避免回发?

   btnClear.Attributes.Item("onClick") = "btnClear_OnClick();"

【问题讨论】:

    标签: asp.net ajax validation-controls


    【解决方案1】:

    尝试在您的onClick 通话结束时添加return false;。这应该防止默认行为(在这种情况下提交)。

    btnClear.Attributes.Add("onClick", "btnClear_OnClick(); return false;")
    

    【讨论】:

    • 非常好。这回答了我的问题。不幸的是,ValidatorHookupControlID 似乎不适用于 Button 控件,所以我让 usercontrol 发出这个脚本:strScript1 &= "document.getElementById('" & CustomValidator1.ClientID & "').innerHTML = '';"跨度>
    • @George:你确定它不适用于常规的 html 元素吗?看起来该函数只需要正确的 ID。
    • 我认为 ValidatorHookupControlID 方法在传递 HTML 或 ASP 按钮时不起作用。
    【解决方案2】:

    如果客户端无需点击任何内容即可修复错误,您是否想在客户端清除错误消息?

    如果我有你的问题,我做了类似的事情,但调用了一个调用一些客户端 javascript 代码的重新验证函数,然后如果他们解决了问题,则隐藏错误消息所在的范围。

    请参阅我的博客文章,让我知道这是否是您想要解决的问题。您要阅读的部分位于底部。

    http://coding.infoconex.com/post/ASPNET-CustomValidator-that-validates-multiple-controls-using-both-Server-Side-and-Client-Side-scripting.aspx

    【讨论】:

      猜你喜欢
      • 2013-05-14
      • 1970-01-01
      • 2018-12-21
      • 1970-01-01
      • 1970-01-01
      • 2011-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多