Javascript 2个验证器只有1个抛出可捕获的isvalid错误

Javascript 2个验证器只有1个抛出可捕获的isvalid错误,javascript,asp.net,regex,validation,Javascript,Asp.net,Regex,Validation,我有这个ASP.Net网站,在同一个控件上验证正则表达式和必填字段 <div class="col-sm-6 col-md-4 col-lg-3"> <em>Requested By:&nbsp;&nbsp; <asp:RegularExpressionValidator ID="RegEx1" runat="server" Control

我有这个ASP.Net网站,在同一个控件上验证正则表达式和必填字段

        <div class="col-sm-6 col-md-4 col-lg-3">
            <em>Requested By:&nbsp;&nbsp;
                <asp:RegularExpressionValidator ID="RegEx1" runat="server"
                    ControlToValidate="tb_ReqBy"
                    ErrorMessage="Invalid Characters"
                    CssClass="Validator_Message"
                    ValidationExpression="^[a-zA-Z0-9'.@\s!#&$%-]{1,50}$" />
            </em>
            <br />
                <asp:TextBox ID="tb_ReqBy" runat="server" />
            <br />
            <asp:RequiredFieldValidator ID="RFV1" runat="server"
                ControlToValidate="tb_ReqBy"
                ErrorMessage="Missing Requested By Name"
                CssClass="Validator_Message" />
        </div>
        <script type="text/javascript">
            function WebForm_OnSubmit() {
                if (typeof (ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) {
                    for (var i in Page_Validators) {
                        try {
                            var control = document.getElementById(Page_Validators[i].controltovalidate);
                            if (!Page_Validators[i].isvalid) {
                                control.className = "form-control-Error";
                            } else {
                                control.className = "form-control";
                            }
                        } catch (e) { }
                    }
                    return false;
                }
                return true;
            }
        </script>
但是,这只会捕获必填字段上的错误,而不会捕获正则表达式错误

我的想法是,因为正则表达式是第一个,它会触发一个错误,但是必填字段有数据,所以它会清除错误????所以JavaScript不会改变CSS样式,因为控件是有效的

我不知道如何触发这两个错误?我的一个想法是使用带有定义字符mins和maxes的正则表达式来触发所需的字段错误,如果这是我的解决方案,我需要在更改1000个输入字段之前确定


谢谢

如果CSS已设置为form control Error,我将脚本更改为不更改CSS

        <script type="text/javascript">
            function WebForm_OnSubmit() {
                if (typeof (ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) {
                    for (var i in Page_Validators) {
                        try {
                            var control = document.getElementById(Page_Validators[i].controltovalidate);
                            if (!Page_Validators[i].isvalid) {
                                control.className = "form-control-Error";
                            } else {
                                if (control.className == "form-control-Error")
                                    control.className = "form-control-Error";
                                else
                                    control.className = "form-control";
                            }
                        } catch (e) { }
                    }
                    return false;
                }
                return true;
            }
        </script>

函数WebForm_OnSubmit(){
if(typeof(ValidatorOnSubmit)=“函数”&&ValidatorOnSubmit()==false){
用于(第页验证程序中的var i){
试一试{
var-control=document.getElementById(第页验证程序[i].controltovalidate);
如果(!Page_Validators[i].isvalid){
control.className=“表单控制错误”;
}否则{
if(control.className==“表单控制错误”)
control.className=“表单控制错误”;
其他的
control.className=“表单控件”;
}
}捕获(e){}
}
返回false;
}
返回true;
}
这解决了在一个控件上清除重复验证程序的问题

        <div class="col-sm-6 col-md-4 col-lg-3">
            <em>Requested By:&nbsp;&nbsp;
                <asp:RegularExpressionValidator ID="RegEx1" runat="server"
                    ControlToValidate="tb_ReqBy"
                    ErrorMessage="Invalid Characters"
                    CssClass="Validator_Message"
                    ValidationExpression="^[a-zA-Z0-9'.@\s!#&$%-]{1,50}$" />
            </em>
            <br />
                <asp:TextBox ID="tb_ReqBy" runat="server" />
            <br />
            <asp:RequiredFieldValidator ID="RFV1" runat="server"
                ControlToValidate="tb_ReqBy"
                ErrorMessage="Missing Requested By Name"
                CssClass="Validator_Message" />
        </div>
        <script type="text/javascript">
            function WebForm_OnSubmit() {
                if (typeof (ValidatorOnSubmit) == "function" && ValidatorOnSubmit() == false) {
                    for (var i in Page_Validators) {
                        try {
                            var control = document.getElementById(Page_Validators[i].controltovalidate);
                            if (!Page_Validators[i].isvalid) {
                                control.className = "form-control-Error";
                            } else {
                                control.className = "form-control";
                            }
                        } catch (e) { }
                    }
                    return false;
                }
                return true;
            }
        </script>
这是我重新阅读我的问题时想到的。StackOverflow再次以另一种方式发挥了作用

谢谢