如何关闭ASP.NET必需的字段验证器“丢失焦点”行为
我有一些代码,我需要两个单独的必需的字段验证器为一个控件,在单独的验证组,然后验证由两个单独的按钮.
当按钮被单击时,这种方法很好,但是如果我在文本框中输入了一个值,然后将其删除,那么这两个验证器都会显示. 有没有办法把这个“失去焦点”的验证关闭?我只需要它来验证按钮是否被点击. 编辑 不幸的是,如果我设置EnableClientScript = false,那么我没有任何客户端通知.我想要的是动态错误消息显示(有效地在按钮的OnClientClick事件中),但不是文本框的“丢失焦点”. 有没有办法可以禁用或“解除”lostfocus客户端事件? 编辑 组合dDejan的答案和womp的answeer here完美地排序问题. 我的最终代码看起来像这样(对于有类似情况的其他人)… 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,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" /> 所以,现在直到用户点击“获取电子邮件确认代码”按钮或“注册”按钮之前,才有验证. 如果他们点击“获取电子邮件确认代码”按钮,所有控件除了用户输入电子邮件验证码的文本框之外都会进行验证,我们只看到一个验证器消息. 如果他们点击“注册”按钮,那么所有控件都将被验证,我们只看到一个验证消息. 如果按下任一按钮,用户将返回,添加然后删除一些文本,然后我们只看到一个验证器.在此更改之前,您曾经看到两个消息都说同样的事情. 谢谢你们的帮助 解决方法
您可以使用ValidatorEnable函数设置验证器是否为“活动”客户端代码.基本上就是这样
var validator = document.getElementById('<%=Validator1.ClientID%>'); ValidatorEnable(validator,state); //where state is boolean 您还可以使用ValidatorValidate(验证器)功能触发验证器来验证某些事件(例如单击按钮). 我不知道哪个会更好地为您工作(启用/禁用验证器或自定义触发验证),但我建议这篇文章将指导您正确的方向 ASP.NET Validation in Depth (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 从头开始??学习asp.net mvc并且能在短时间内
- asp.net-mvc – MVC – 用于触发Ajax.ActionLink的按钮
- asp.net-mvc-4 – Visual Studio 2012 Professional中没有M
- IIS7上的ASP.NET应用程序 – 在iisreset启动后非常慢
- asp.net-mvc-4 – MVC4 RC脚本捆绑很慢
- 阻止拦截ASP.NET Web API响应的FormsAuthenticationModule
- asp.net-mvc – 带有MVC Sitemap的Breadcrumb只显示一个级别
- asp.net – 如何在Web / Windows窗体中将IronRuby或IronPyt
- ASP.NET连接字符串元数据语法
- asp.net – 奇怪的Javascript JSON未定义错误