来自this answer的代码:
$.validator.addMethod('lessThanEqual', function(value, element, param) {
return this.optional(element) || parseInt(value) <= parseInt($(param).val());
}, "The value {0} must be less than {1}");
{0}
和{1}
的含义是什么? Javascript中定义那些参数替换的经验法则是什么?
因此,根据评论,我想进一步询问,以便在此处传递{0}和{1}。
我必须使用什么语法来验证函数lessThanEqual。
谢谢
答案 0 :(得分:7)
没有“特殊”含义,它们只是验证器插件在显示消息时替换的标记,数字地指代规则的参数。
具体来说,这是在插件中发生的:
message = jQuery.format(message.replace(theregex, '{$1}'), rule.parameters);
因此{0}
引用第一个参数,{1}
引用第二个参数,依此类推。这是格式函数as it is in jQuery.validate 1.7:
$.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) {
source = source.replace(new RegExp("\\{" + i + "\\}", "g"), n);
});
return source;
};
答案 1 :(得分:1)
我认为这是验证器插件特定的模板语法,用于将{0}
绑定到实际值,将{1}
绑定到“所需”值。
答案 2 :(得分:1)
他们是占位符。在使用验证器的代码中,{0}和{1}被实际值替换。
答案 3 :(得分:1)
它们没有特殊含义,但它们用作格式占位符,例如:
function format(str/*, args*/) {
var args = Array.prototype.slice.call(arguments, 1);
return str.replace(/{(\d+)}/g, function (m, i) {
return args[i];
});
}
format("{0} {1}!!", "Hello", "world"); // "Hello world!!"