加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

如何关闭ASP.NET必需的字段验证器“丢失焦点”行为

发布时间:2020-12-15 22:46:02 所属栏目: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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读