powered by simpleCommunicator - 2.0.59     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET Validator вынуждает нажимать tab дважды для перехода к другому полю
10 сообщений из 10, страница 1 из 1
ASP.NET Validator вынуждает нажимать tab дважды для перехода к другому полю
    #38046702
Сирин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если введённое значение корректно, то по tab переход на следующее поле осуществляется сразу. Если значение некорректно (не проходит валидацию), то приходится нажимать tab дважды, чтобы перейти на следующее поле. Я так понял, что при потере фокуса (blur) срабатывает валидация, и в случае неправильного ввода фокус остаётся на текущем поле, чтобы пользователь смог исправить значение. Однако при этом никаких сообщений об ошибках не выводится. Они появляются только при отправке формы, при этом фокус устанавливается на первом поле с некорректными данными. Я бы хотел, чтобы фокус менялся сразу, а остальное оставить без изменений, т. е. сообщения ошибках появляются только при отправке формы.
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
<asp:ValidationSummary runat="server" ValidationGroup="ChangePasswordValidation" />
<asp:TextBox ID="Verification" runat="server" TextMode="Password" CausesValidation="True" />
<asp:TextBox ID="Password" runat="server" TextMode="Password" CausesValidation="True"/>
<asp:TextBox ID="Confirmation" runat="server" TextMode="Password" CausesValidation="True" />
<asp:Button ID="ChangePasswordButton" runat="server" OnClick="ChangePassword_Click" Text="Применить" ValidationGroup="ChangePasswordValidation" />

<asp:RequiredFieldValidator ID="OldPasswordRequiredFieldValidator" runat="server" ControlToValidate="Verification" Display="None" ErrorMessage="Введите старый пароль" SetFocusOnError="true" ValidationGroup="ChangePasswordValidation">
</asp:RequiredFieldValidator>
<asp:RequiredFieldValidator ID="PasswordRequiredFieldValidator" runat="server" ControlToValidate="Password" Display="None" ErrorMessage="Введите пароль" SetFocusOnError="true" ValidationGroup="ChangePasswordValidation">
</asp:RequiredFieldValidator>
<asp:RequiredFieldValidator ID="ConfirmationRequiredFieldValidator" runat="server" ControlToValidate="Confirmation" Display="None" ErrorMessage="Введите повтор пароля" SetFocusOnError="true" ValidationGroup="ChangePasswordValidation">
</asp:RequiredFieldValidator>
<asp:CompareValidator ID="PasswordsCompareValidator" runat="server" ControlToValidate="Password" Display="None" ErrorMessage="Пароль и повтор пароля должны совпадать" SetFocusOnError="true" ValidationGroup="ChangePasswordValidation" ControlToCompare="Confirmation">
</asp:CompareValidator>


ASP.NET 4.0.
...
Рейтинг: 0 / 0
ASP.NET Validator вынуждает нажимать tab дважды для перехода к другому полю
    #38046721
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сирин,

Атрибут SetFocusOnError="true" на всех твоих валидаторах на какие-нибудь мысли наводит?
...
Рейтинг: 0 / 0
ASP.NET Validator вынуждает нажимать tab дважды для перехода к другому полю
    #38046801
Сирин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Установка SetFocusOnError в False устраняет проблему с табом, но тогда и при сабмите при наличии ошибки не происходит фокусировка на первом невалидном поле. В целом, такое поведение уже приемлемо, но было бы лучше, если бы фокус переходил при сабмите при наличии ошибки.
...
Рейтинг: 0 / 0
ASP.NET Validator вынуждает нажимать tab дважды для перехода к другому полю
    #38046934
bazile
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СиринВ целом, такое поведение уже приемлемо, но было бы лучше, если бы фокус переходил при сабмите при наличии ошибки.
Напиши свой валидатор, раз не устраивает поведение стандартного.
...
Рейтинг: 0 / 0
ASP.NET Validator вынуждает нажимать tab дважды для перехода к другому полю
    #38047171
Сирин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А штатного способа отключения проверки на onblur нет?
...
Рейтинг: 0 / 0
ASP.NET Validator вынуждает нажимать tab дважды для перехода к другому полю
    #38050069
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
javascript

Page_Validators - перечисление всех валидаторов на странице
Page_Validators[index].isvalid - валиден ли валидатор
Page_Validators[index].controltovalidate - id элемента проверяемого валидатором

в OnClientClick твоей сабмитящей кнопки можешь написать что-то вроде javascript:return myValidate();

в myValidate пройтись по всем валидоторам на странице, и при встрече первого невалидного - установить фокус (document.getElementById(Page_Validators[index].controltovalidate).focus()) и вернуть false, чтобы не было сабмита
...
Рейтинг: 0 / 0
ASP.NET Validator вынуждает нажимать tab дважды для перехода к другому полю
    #38051108
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Сирин, ну что, справился?
...
Рейтинг: 0 / 0
ASP.NET Validator вынуждает нажимать tab дважды для перехода к другому полю
    #38052800
Сирин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanSYS,

Спасибо за вариант, но пока пошёл по пути наименьшего сопротивления — SetFocusOnError = False. Если потребуется фокусировка, то попробую ваш алгоритм.
...
Рейтинг: 0 / 0
ASP.NET Validator вынуждает нажимать tab дважды для перехода к другому полю
    #38053080
Фотография SanSYS
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
СиринSanSYS,

Спасибо за вариант, но пока пошёл по пути наименьшего сопротивления — SetFocusOnError = False. Если потребуется фокусировка, то попробую ваш алгоритм.
Не правильное решение, ты прежде всего программист, потому должен попробовать, даже если не внедришь, иначе, когда подобная проблема возникнет вновь - придется вновь изобретать велосипед
...
Рейтинг: 0 / 0
ASP.NET Validator вынуждает нажимать tab дважды для перехода к другому полю
    #38053653
Сирин
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
SanSYS,

Инициализируя OnClientClick, мы затираем то, что ASP.NET туда пишет. А он пишет свою функцию, которая валидирует и выводит сообщения об ошибках . Получается, что фокус устанавливается на первом контроле, но сообщения не выводятся.
...
Рейтинг: 0 / 0
10 сообщений из 10, страница 1 из 1
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / ASP.NET Validator вынуждает нажимать tab дважды для перехода к другому полю
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]