2009-08-27 7 views
0

J'essaie de nettoyer une partie du JavaScript dans mes vues et l'une des choses que je voudrais faire est de déplacer mon code jQuery Validation vers une fonction de script externe et passer dans les références aux champs que je dois traiter/valider. La question que je suis confronté est concernant la façon dont la signature du champ des règles de jQuery Validation est formaté:jQuery Validation - Déplacement de JS vers des fichiers externes et des champs passants

$("#form").validate({ 
    rules: { 
     txtNoSpam: { 
      remote: WebSettings.SpamFilterValidationUrl 
     } 
    }, 
    messages: { 
     txtNoSpam: { 
      remote: "Answer is incorrect." 
     } 
    }, 
}); 

Dans le code ci-dessus cartes « txtNoSpam » directement à un élément sur ma page appelé txtNoSpam, mais je passe beaucoup mieux txtNoSpam dans ma fonction d'initialisation comme un objet, puis la carte de la validation sur le terrain correct en utilisant le nom de l'élément d'objet fourni comme nom de paramètre:

function Init(form, field1) 
    form.validate({ 
     rules: { 
      field1.attr('name'): { 
       remote: WebSettings.SpamFilterValidationUrl 
      } 
     }, 
     messages: { 
      field1.attr('name'): { 
       remote: "Answer is incorrect." 
      } 
     }, 
    }); 
} 

Est-il possible que je peux y parvenir?

+0

Pouvez-vous préciser le dernier paragraphe un peu? Je ne comprends pas vraiment ce que tu veux faire. –

Répondre

1

Essayez de construire des options de validation par étapes afin de pouvoir utiliser []. Voir exemple ci-dessous:

function my_validate(field_name) { 
    var opts = {rules:{},messages:{}}; 
    opts.rules[field_name] = {remote: WebSettings.SpamFilterValidationUrl}; 
    opts.messages[field_name] = {remote: "Answer is incorrect."}; 
    form.validate(opts); 
} 

MISE À JOUR: Compte tenu de votre question mise à jour, voici le Init:

function Init(form, field1) 
    var opts = {rules:{},messages:{}}; 
    opts.rules[field1.attr('name')] = {remote: WebSettings.SpamFilterValidationUrl}; 
    opts.messages[field1.attr('name')] = {remote: "Answer is incorrect."}; 
    form.validate(opts); 
} 
+0

Comment voulez-vous dire? –

+0

Nevermind réellement. Je comprends maintenant. :) –

Questions connexes