1

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

替代文字

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 个控件将被重置。为了避免回发,清除按钮是一个常规的 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();"
4

2 回答 2

2

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

btnClear.Attributes.Add("onClick", "btnClear_OnClick(); return false;")
于 2010-04-29T02:52:10.123 回答
0

如果他们修复错误而无需单击任何正确的内容,您是否想清除客户端的错误消息?

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

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

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

于 2010-10-14T04:32:36.090 回答