jQuery验证程序没有格式化消息

jQuery验证程序没有格式化消息,jquery,jquery-validate,metadata,Jquery,Jquery Validate,Metadata,我已经用我一直使用的方法翻译了我想要的信息。信息显示得很好,问题是号码不见了 我的邮件翻译代码: $.extend(jQuery.validator.messages, { required: 'Este campo es requerido.', maxlength: $.validator.format("Favor de ingresar no mas de {0} caracteres."), max: $.vali

我已经用我一直使用的方法翻译了我想要的信息。信息显示得很好,问题是号码不见了

我的邮件翻译代码:

$.extend(jQuery.validator.messages, {
            required: 'Este campo es requerido.',
            maxlength: $.validator.format("Favor de ingresar no mas de {0} caracteres."),
            max: $.validator.format("Favor de ingresar un valor menos de o igual a {0}."),
        });
这是输出:

它验证得很好,如果我将值降低到100以下,它将接受它们。因此,这意味着现有的规则很好,但消息没有格式化

更新

jquery.validate.js
的第217行,我放置了replace方法的
console.log

$.validator.format = function( source, params ) {
    if ( arguments.length === 1 ) {
        return function() {
            var args = $.makeArray( arguments );
            args.unshift( source );
            return $.validator.format.apply( this, args );
        };
    }
    if ( arguments.length > 2 && params.constructor !== Array  ) {
        params = $.makeArray( arguments ).slice( 1 );
    }
    if ( params.constructor !== Array ) {
        params = [ params ];
    }
    $.each( params, function( i, n ) {
        console.log(source.replace( new RegExp( "\\{" + i + "\\}", "g" ), function() {
            return n;
        }));
        source = source.replace( new RegExp( "\\{" + i + "\\}", "g" ), function() {
            return n;
        });
    });
    return source;
};
不幸的是,即使用日志代替方法,它的编号仍然是
0
。因此,它无法从验证器中获取丢失的实际数据:


在我最初的帖子中,我没有想到的是我正在使用smarty模板。并不是我包装在
{literal}
标记中的所有Javascript。因此,它将消息数组中的
{0}
转换为smarty变量。因此在
jquery.validate.js
的第232行中,它实际上没有替换任何内容,因为缺少
{}
括号

因此,通过使用
{literal}
标记将替换代码包装在
tpl
文件中,它解决了整个问题

新代码:

        {literal}
        $.extend(jQuery.validator.messages, {
            required: 'Este campo es requerido.',
            maxlength: $.validator.format("Favor de ingresar no mas de {0} caracteres."),
            max: $.validator.format("Favor de ingresar un valor menos de o igual a {0}."),
        });
        {/literal}

它对我来说是正确的:您使用的是什么版本的jquery验证?在1.12中,
data rule max
更改为
data ruleMax
。看起来您正在使用另一个插件将输入从文本字段更改为组合框,这可能与
jquery validate
不兼容。请发布实际代码的MCVE,而不是代码的图片。我指的是您的HTML标记。不,它既不是版本,也不是jquery UI中的微调器元素。我已经用影响该字段的所有相同组件和我的validator 1.13进行了尝试,它在fiddle中工作,而不是我的站点: