У меня есть код, в котором мне нужны два отдельных обязательных валидатора поля для одного элемента управления, оба в отдельных группах валидации, которые затем проверяются двумя отдельными кнопками.
Этот подход хорошо работает, когда кнопки нажимаются, но оба средства проверки показывают, если я ввожу значение в текстовое поле, а затем удаляю его.
Есть ли способ отключить эту проверку "потерянного фокуса"? Мне нужно только проверить, когда кнопки нажаты.
EDIT
К сожалению, если я установлю EnableClientScript = false, у меня не будет каких-либо клиентских уведомлений. Я хочу, чтобы динамическое сообщение об ошибке отображалось (эффективно в событии OnClientClick кнопки), а не «потерял фокус» текстового поля.
Есть ли способ отключить или "отцепить" событие клиента lostfocus?
EDIT
Сочетание ответа dDejan и ответа womp здесь решило проблему идеально.
Мой окончательный код выглядит следующим образом (для тех, у кого похожая ситуация) ...
Javascript ...
<script type="text/javascript">
$(document).ready(function() {
$('body').fadeIn(500);
//Turn off all validation = its switched on dynamically
$.each(Page_Validators, function(index, validator) {
ValidatorEnable(validator, false);
});
});
function ToggleValidators(GroupName) {
$.each(Page_Validators, function(index, validator) {
if (validator.validationGroup == GroupName) {
ValidatorEnable(validator, true);
} else {
ValidatorEnable(validator, false);
}
});
}
</script>
Пример управления ASPX ...
<telerik:RadTextBox Width="196px" ID="txtFirstName" runat="server" MaxLength="50" Skin="Black"></telerik:RadTextBox>
<asp:RequiredFieldValidator ID="valFirstName" CssClass="Validator" runat="server" EnableClientScript="true" Display="Dynamic" ErrorMessage="You must enter your first name." ControlToValidate="txtFirstName" ValidationGroup="NeededForEmail"></asp:RequiredFieldValidator>
<asp:RequiredFieldValidator ID="RequiredFieldValidator1" CssClass="Validator" runat="server" EnableClientScript="true" Display="Dynamic" ErrorMessage="You must enter your first name." ControlToValidate="txtFirstName" ValidationGroup="NeededForSubmit"></asp:RequiredFieldValidator>
Код кнопки ASPX ...
<asp:Button ID="btnGetConfCode" runat="server" Text="Get Confirmation Code" OnClientClick="ToggleValidators('NeededForEmail')" OnClick="btnGetConfCode_Click" Width="100%" ValidationGroup="NeededForEmail"/>
<asp:Button ID="btnRegisterUser" runat="server" Text="Register" OnClientClick="ToggleValidators('NeededForSubmit')" OnClick="btnRegisterUser_Click" Width="100px" ValidationGroup="NeededForSubmit" />
Итак, теперь нет проверки, пока пользователь не нажмет кнопку «Получить код подтверждения по электронной почте» или кнопку «Зарегистрироваться».
Если они нажимают кнопку «Получить код подтверждения электронной почты», все элементы управления проверяются, кроме текстового поля, в котором пользователь должен ввести код проверки электронной почты, и мы видим только одно сообщение проверки.
Если они нажимают кнопку «Зарегистрироваться», то все элементы управления проверяются, и мы видим только одно сообщение проверки.
Если нажата любая из кнопок, пользователь возвращается, добавляет, а затем удаляет некоторый текст, тогда мы видим только один валидатор. До этого изменения вы видели оба сообщения, говорящие об одном и том же.
Спасибо за помощь, ребята