我有一个用于输入日期的复合用户控件:
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();"