带有动态错误消息的jquery验证添加方法[重复]

Posted

技术标签:

【中文标题】带有动态错误消息的jquery验证添加方法[重复]【英文标题】:jquery validation addmethod with dynamic error message [duplicate] 【发布时间】: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();

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

【问题讨论】:

【参考方案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();

【讨论】:

以上是关于带有动态错误消息的jquery验证添加方法[重复]的主要内容,如果未能解决你的问题,请参考以下文章

输入空时jQuery文本输入实时验证清除错误[重复]

带有 JQuery 验证的 Kendo DatePickerFor

输入类型文件的 jQuery 验证

jQuery 验证:更改默认错误消息

将错误消息与图标动态绑定到单个 jQuery 对话框

如何使用带有 Vue 的 HTML 5 验证添加错误消息