【问题标题】:jquery validation addmethod with dynamic error message [duplicate]带有动态错误消息的jquery验证添加方法[重复]
【发布时间】:2021-11-20 07:52:22
【问题描述】:

如果输入,我正在使用 jquery.validation 来验证出生日期。我正在使用 Add 方法,但想根据输入的值有什么问题来自定义错误消息。我正在使用 moment.js 进行日期验证。

所以第一次检查应该检查它是否有效。然后我想检查这个人是否小于 1 或大于 110,如果不是,则显示适当的错误消息。

我已经尝试设置一个全局变量,但是因为消息是在构造函数中设置的,所以这是无效的 - 但我将它留在此处以显示我尝试过的内容。

我的代码如下

var err = 'error date'; /* using this method does not work */

jQuery.validator.addMethod("validDOB", function(value, element) {
            
    if (value != "") {
        try {
            if (!moment(value,"DD-MM-YYYY",true).isValid()) {
                throw "Please enter a valid date (dd-mm-yyyy)!";
            }
            
            var years = moment().diff(moment(value, "DD-MM-YYYY"), 'years');
            
            if (years < 1) {
                throw "You seem a little young";
            }
            
            if (years > 110) {
                throw "You seem a little old";
            }
                
        }
        catch (e) {
            err = e;
            return false;
        }
    }
    
    return true;
}, err);

function setupValidation()
{   
    registerValidator = $("#UserReg").validate({
        rules: {
            txtRegUserDOB: {
                validDOB: true
            }
        }
    });
}

setupValidation();

有没有办法生成这样的自定义错误消息?

【问题讨论】:

    标签: jquery jquery-validate


    【解决方案1】:

    您可以如下定义自定义错误消息:

    jQuery.validator.addMethod("validDOB", function(value, element) {                
           if (value != "") {
                if (!moment(value,"DD-MM-YYYY",true).isValid()) {
                    return false;
                }                
                var years = moment().diff(moment(value, "DD-MM-YYYY"), 'years');                
                if (years < 1) {
                    return false; 
                }                
                if (years > 110) {
                    return false;
                }                    
            }           
        return true;
    }, function(error, element){
        var value = $(element).val();
        if (!moment(value,"DD-MM-YYYY",true).isValid()) {
            return "Please enter a valid date (dd-mm-yyyy)!";
        }
        
        var years = moment().diff(moment(value, "DD-MM-YYYY"), 'years');
        
        if (years < 1) {
            return "You seem a little young";
        }
        
        if (years > 110) {
            return "You seem a little old";
        }
    });
    
    function setupValidation()
    {   
        registerValidator = $("#UserReg").validate({
            rules: {
                txtRegUserDOB: {
                    validDOB: true
                }
            }
        });
    }
    
    setupValidation();
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-08-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-03-03
      相关资源
      最近更新 更多