我已经使用我一直使用的方法翻译了我想要的消息。消息出现就好了,问题是号码丢失了。
我的邮件翻译代码:
$.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行,我放置了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
。所以它没有得到验证器遗漏的实际数据:
答案 0 :(得分:0)
我最初在原帖中没有想到的是我使用的是聪明的模板。并不是我在margin-bottom
标签中包装的所有Javascript。所以它将消息数组中的0
翻译为一个聪明的变量。因此,在{literal}
的第232行,它实际上没有替换任何内容,因为{0}
括号丢失了。
因此,通过使用jquery.validate.js
标记将替换代码包装在{}
文件中,可以解决整个问题。
新代码:
tpl