Как скрыть пульсатор при сбое проверки на стороне клиента ASP.NET?
Я использую элемент управления входом в ASP.NET, и я показываю трепетер jQuery при нажатии кнопки отправки. Это работает нормально, но пульсатор виден, если проверка на стороне клиента завершается неудачно, а кнопка невидима, поэтому пользователь не может повторно отправить форму. Как скрыть пульсатор, если проверка на стороне клиента не удалась?
2 ответа
Это было немного сложно, но я получил это работает. Прежде всего, элемент управления Login должен быть шаблонным, что я и ожидал, но даже при этом ClientID кнопки недоступен, поэтому мне пришлось добавить к нему селектор класса. Сначала я попытался добавить пульсатор и включить его, если проверка прошла успешно с использованием слегка / недокументированного события Page_ClientValidate(), но это не сработало, потому что пульсатор по умолчанию подписывается на событие нажатия кнопки и включается до проверки.
То, что сработало, так это прикрепление к мини-API и добавление пульса к кнопке, если Page_IsValid имеет значение true. Атрибут CausesValidation кнопки должен иметь значение true (по умолчанию).
JavaScript:
$(document).ready(function() {
$('.login').click(function() {
if (Page_IsValid) {
$('.login').throbber({ image: "Images/throbber.gif" });
}
});
});
разметка кнопок; единственное дополнение из шаблона элемента управления Login - это атрибут CssClass:
<asp:Button ID="LoginButton" runat="server" CommandName="Login" Text="Log In" ValidationGroup="uxLogin" CssClass="login" />
Не зная о деталях... почему вы не запускаете пульсатор только после прохождения проверки на стороне клиента? Как пользователь, я был бы удивлен, увидев, что элемент пользовательского интерфейса вспыхнул очень временно, только чтобы снова его удалить и заменить сообщением об ошибке.