Как очистить ошибку CustomValidator от события нажатия кнопки? - PullRequest
1 голос
/ 29 апреля 2010

У меня есть композитный элемент управления для ввода дат:

alt text

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();"

Ответы [ 2 ]

2 голосов
/ 29 апреля 2010

Попробуйте добавить return false; в конце вашего onClick вызова.Это должно предотвратить поведение по умолчанию (в данном случае отправить).

btnClear.Attributes.Add("onClick", "btnClear_OnClick(); return false;")
0 голосов
/ 14 октября 2010

Вы хотите очистить сообщение об ошибке на стороне клиента, если они исправят ошибку, не нажимая на что-нибудь правильно?

Я сделал что-то подобное, если у меня есть проблема, но я вызвал функцию повторной проверки, которая вызывала некоторый код на стороне клиента на стороне клиента, а затем скрывал диапазон, в котором находится сообщение об ошибке, если они устранили проблему.

Посмотрите мою статью в блоге и дайте мне знать, если это то, что вы хотите решить. Часть, которую вы хотите прочитать, находится внизу.

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

...