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中工作,而不是我的站点: