jQuery Validator没有格式化消息

时间:2015-07-02 21:45:03

标签: 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: $.validator.format("Favor de ingresar un valor menos de o igual a {0}."),
        });

这是输出:

enter image description here

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

enter image description here

更新

jquery.validate.js的第217行,我放置了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。所以它没有得到验证器遗漏的实际数据:

enter image description here

1 个答案:

答案 0 :(得分:0)

我最初在原帖中没有想到的是我使用的是聪明的模板。并不是我在margin-bottom标签中包装的所有Javascript。所以它将消息数组中的0翻译为一个聪明的变量。因此,在{literal}的第232行,它实际上没有替换任何内容,因为{0}括号丢失了。

因此,通过使用jquery.validate.js标记将替换代码包装在{}文件中,可以解决整个问题。

新代码:

tpl