Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/74.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何用不同的错误消息验证这两个字段?_Javascript_Jquery_Jquery Validate - Fatal编程技术网

Javascript 如何用不同的错误消息验证这两个字段?

Javascript 如何用不同的错误消息验证这两个字段?,javascript,jquery,jquery-validate,Javascript,Jquery,Jquery Validate,我有两个字段:名称查询和公司ID。它们需要满足以下条件: 当这2个字段中的1个有效时,即不为空,并且显示“请填写…”消息时,可以提交表单 这两个字段都在向上键和向外聚焦时进行验证 对于“公司Id”字段,它会在向上键时与正则表达式进行检查,并将焦点调出,如果无效,则无法提交表单,并显示消息“公司Id格式无效” 以下是我的解决方案: var myForm=$(“#myForm”); $.validator.addMethod(“regx”,函数(值,元素,regexpr){ 返回regexpr.t

我有两个字段:名称查询和公司ID。它们需要满足以下条件:

  • 当这2个字段中的1个有效时,即不为空,并且显示“请填写…”消息时,可以提交表单
  • 这两个字段都在向上键和向外聚焦时进行验证
  • 对于“公司Id”字段,它会在向上键时与正则表达式进行检查,并将焦点调出,如果无效,则无法提交表单,并显示消息“公司Id格式无效”
  • 以下是我的解决方案:

    var myForm=$(“#myForm”);
    $.validator.addMethod(“regx”,函数(值,元素,regexpr){
    返回regexpr.test(值);
    },函数(参数,元素){
    返回“无效的公司ID格式”
    });
    myForm.validate({
    规则:{
    名称查询:{
    需要_组中的_:[1',.mygroup']
    },
    公司ID:{
    需要来自组[1'.mygroup']的组[U],
    regx://^$|^[A-Za-z][A-Za-z]\d\d\d\/\d\/\w\w\w+$/
    }
    },
    信息:{
    名称查询:{
    必填:“请填写姓名查询”
    },
    公司ID:{
    必填:“请填写公司ID”
    }
    },
    errorClass:“警报”,
    onkeyup:函数(元素){
    这个,元素(元素),;
    },
    onfocusout:函数(元素){
    这个,元素(元素),;
    },
    突出显示:函数(元素,errorClass){
    $(元素).addClass(错误类);
    },
    submitHandler:函数(表单){
    $(“p”).html('已提交表单')
    },
    invalidHandler:函数(表单){
    $(“p”).empty();
    }
    })
    input.alert{
    边框:1px纯红;
    }
    label.alert{
    颜色:红色;
    }
    
    姓名查询:
    
    公司编号:

    “…显示默认消息“请至少填写其中一个字段”。有什么建议吗?”

    它显示了来自\u组的
    require\u的默认消息,因为您尚未为此规则/方法定义任何自定义消息

    相反,您在
    required
    规则/方法上设置了一条自定义消息,这是一条您甚至没有使用的规则

    规则/方法的自定义消息必须与该规则/方法的名称相对应,在本例中称为
    require\u from\u group

    // messages object/option
    messages: {  
        // name attribute of the field
        nameQuery: {
            // name of the rule/method being used
            require_from_group: "Please fill in name query"
        },
        companyId: {
            require_from_group: "Please fill in company ID"
        } ....
    

    注意:在自定义方法中,除非动态更改消息,否则不需要函数返回消息。相反,您可以只指定一个字符串作为消息而不是函数

    $.validator.addMethod(
        // name
        "regx",
        // method
        function (value, element, regexpr) {
            return regexpr.test(value);
        },
        // message
        "Invalid company ID format"  // just the string in this case
    );
    
    此外,您甚至不需要为Regex编写自定义方法,因为附加方法文件已经包含一个名为
    pattern
    的规则,该规则将执行此操作

    ....
    companyId: {
        require_from_group: [1, '.mygroup'],
        pattern: '^$|^[A-Za-z][A-Za-z]\d\d\d\/\d\/\w\w\w\w+$'
    ....
    
    最后,无论您使用
    高亮显示
    执行什么操作,都应该使用
    取消高亮显示
    进行反转

    ....
    unhighlight: function (element, errorClass) {
        $(element).removeClass(errorClass);
    }, ....
    

    您可能还想考虑更新jQuery验证版本,因为V1.12.0在这一点上已经超过五年(2014年4月)。


    演示

    var myForm=$(“#myForm”);
    myForm.validate({
    规则:{
    名称查询:{
    需要_组中的_:[1',.mygroup']
    },
    公司ID:{
    需要来自组[1'.mygroup']的组[U],
    模式:“^$|^[A-Za-z][A-Za-z]\d\d\d\/\d\/\w\w\w+$”
    }
    },
    信息:{
    名称查询:{
    需要来自\u组的\u:“请填写姓名查询”
    },
    公司ID:{
    需要_组的_:“请填写公司ID”,
    模式:“无效的公司ID格式”
    }
    },
    errorClass:“警报”,
    onkeyup:函数(元素){
    这个,元素(元素),;
    },
    onfocusout:函数(元素){
    这个,元素(元素),;
    },
    突出显示:函数(元素,errorClass){
    $(元素).addClass(错误类);
    },
    取消高亮显示:函数(元素,errorClass){
    $(元素).removeClass(错误类);
    },
    submitHandler:函数(表单){
    $(“p”).html('已提交表单')
    },
    invalidHandler:函数(表单){
    $(“p”).empty();
    }
    })
    input.alert{
    边框:1px纯红;
    }
    label.alert{
    颜色:红色;
    }
    
    姓名查询:
    
    公司编号:


    您是否已尝试将
    必需的
    设置为所有字段mb
    require\u from_group
    在您的情况下是不够的?@Egor S.是的,我尝试过,并且所有字段中的结果都需要验证,而不是2个字段中的1个。如果您想要
    require\u from_group
    上的自定义消息,然后将自定义消息设置为“组中的
    require\u”
    ,而不是像您所做的那样设置为“required”
    。你是否按照我在回答最后一个问题时的建议复习了?