У нас часто возникают проблемы с валидаторами .NET для элементов, которые скрыты с помощью javascript / css (т. Е. Display: none)
Например (могут быть синтаксические ошибки, но не беспокойтесь об этом)
<asp:CheckBox ID="chkNewsletter" runat="server" Checked="true" />
...
<div id='newsletterOnly'>
<asp:TextBox ID="txtEmail" runat="server" />
<asp:RequiredFieldValidator ID="vldEmail" ControlToValidate="txtEmail" ErrorMessage="Required" runat="server" />
</div>
с JavaScript:
$('#chkNewsletter').changed(function() {
$(this).is(':checked') ? $('#newsletterOnly').show() : $('#newsletterOnly').hide();
});
Не следует проверять txtEmail , если оно скрыто.
Вы не можете отправить форму, если newsletterOnly скрыто, поскольку RequiredFieldValidator по-прежнему действует, даже если он скрыт: (
И вы даже не можете увидеть сообщение об ошибке валидатора, потому что оно скрыто
Есть ли способ обойти это?
Я стараюсь избегать использования PostBacks для улучшения взаимодействия с пользователем.
Хотелось бы изменить JavaScript .NET для проверки элементов управления только тогда, когда они видны.