У меня есть композитный элемент управления для ввода дат:
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 с событием OnClick, которое сбрасывает 3 элемента управления. К сожалению, метод ValidatorHookupControlID, по-видимому, не работает с элементами управления HTML, поэтому я решил заменить кнопку HTML на кнопку ASP и вместо нее подключить этот элемент управления. Тем не менее, я не могу устранить функцию обратной передачи, связанную по умолчанию с элементом управления ASP. Я попытался установить для UseSubmitBehavior значение False, но он все еще отправляет. Я попытался вернуть false в своем клиентском коде btnClear_OnClick, но код, отправленный в браузер, включал в себя вызов DoPostback после моего вызова.
btnClear.Attributes.Add("onClick", "btnClear_OnClick();")
Вместо добавления кода OnClick я попытался перезаписать его, но код DoPostBack все еще был включен в окончательный код, который был отправлен в браузер.
Что нужно сделать, чтобы кнопка Clear очистила ошибку CustomValidator при нажатии и избежала обратной передачи?
btnClear.Attributes.Item("onClick") = "btnClear_OnClick();"