2010-07-14 8 views
1

Dans le code de this answer:Quelle est la signification de {0} en JavaScript

$.validator.addMethod('lessThanEqual', function(value, element, param) { 
    return this.optional(element) || parseInt(value) <= parseInt($(param).val()); 
}, "The value {0} must be less than {1}"); 

Quel est le sens de {0} et {1}? Quelle est la règle de base en Javascript pour définir ces remplacements de paramètres? Donc, basé sur les commentaires, je veux demander plus loin afin de passer {0} et {1} ici.

Quelle est la syntaxe que je dois utiliser pour la fonction de validation lessThanEqual.

merci

Répondre

7

Il n'y a pas un sens « spécial », ils sont juste des jetons que le plugin validateur remplace lors de l'affichage du message, se référant numériquement aux paramètres de la règle.

Plus précisément, ce qui se passe dans le plugin:

message = jQuery.format(message.replace(theregex, '{$1}'), rule.parameters); 

Ainsi {0} fait référence au premier paramètre, {1} la deuxième et ainsi de suite. Voici que la fonction de format 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

Je pense qu'il est du plugin validateur syntaxe spécifique pour lier templating {0} à la valeur réelle et {1} à la valeur « souhaitée ».

1

Ils sont des espaces réservés. Dans le code qui utilise le validateur, {0} et {1} sont remplacés par des valeurs réelles.

1

Ils ont pas de signification particulière, mais ils sont utilisés comme des espaces réservés format, par exemple:

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!!" 
Questions connexes