2009-12-16 3 views
2

J'utilise LiveValidation pour les éléments d'entrée. Ceux-ci viennent dans une table récupérée avec un appel AJAX, et peuvent être des multiples de 4, entre 4 et 36.Substituer à eval() l'utilisation du constructeur LiveValidation

J'utilise eval pour appeler le constructeur pour LiveValidation car le nombre d'éléments d'entrée peut varier après chaque AJAX appel et je ne pouvais pas penser à une autre façon (je n'ai pas beaucoup d'expérience avec JavaScript).

J'utilise ceci:

$("input[type=text]", tableElement).each(function(index) { 
    eval("var temp_" + index + " = new LiveValidation(this, { wait: 0, validMessage: ' ' });"); 
    eval("temp_" + index + ".add(Validate.Numericality, { onlyInteger: true });"); 
    eval("temp_" + index + ".add(Validate.Presence, { failureMessage: 'Cannot be blank' });"); 
}); 

Quelle serait une meilleure façon de faire parvenir à la même sans l'utilisation de eval comme je sais qu'il doit être utilisé avec parcimonie.

Répondre

2

Eh bien, semble que je peux utiliser ceci:

$("input[type=text]", tableElement).each(function(index) { 
    var temp = new LiveValidation(this, { wait: 0, validMessage: ' ' }); 
    temp.add(Validate.Numericality, { onlyInteger: true }); 
    temp.add(Validate.Presence, { failureMessage: 'Cannot be blank' }); 
}); 

Je pensais que cela ne fonctionnerait pas, mais il le fait.