【发布时间】:2012-03-24 15:38:59
【问题描述】:
我们经常在使用 javascript/css 隐藏的元素上遇到 .NET 验证器问题(即 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 以改善用户体验。
我希望我可以修改 .NET javascript 以仅在控件可见时验证它们。
【问题讨论】:
-
您是否尝试过禁用隐藏元素?我期望这是解决方案。
-
发布到服务器时使用两种不同的视图模型的可能性如何:一种用于不同的情况?您只需要发布到两条不同的路线。
-
或者您需要在 javascript 中进行验证,而不是在服务器上。
-
@MAT GAL 使用 JS 禁用它们?那我宁愿自己写验证吗? @Eli 不知道你是什么意思对不起。我已经使示例更清楚了。 @arcynum 这就是我想要避免的
标签: javascript jquery asp.net validation