2010-02-22 5 views
0

J'ai deux questions concernant la validation côté client en ASP, relatives à la configuration suivante:ASP validation côté client malheurs

J'ai ce peu de javascript qui applique des styles d'erreur pour former des éléments si elles ne parviennent pas à valider:

 var val = Page_ClientValidate(); 

     if (!val) { 
      var i = 0; 
      for (; i < Page_Validators.length; i++) { 
       if (!Page_Validators[i].isvalid) { 
        $("#" + Page_Validators[i].controltovalidate).parent().removeClass("valid").addClass("invalid"); 
       } else { 
        $("#" + Page_Validators[i].controltovalidate).parent().removeClass("invalid").addClass("valid"); 
       } 
      } 
     } 

     return val; 

L'appel à parent() fait référence à un asp: Panel, qui englobe chaque élément de forme individuelle et ses validateurs. Mon problème est que, si j'affecte plus d'un validateur à un contrôle, et que le premier validateur échoue mais que le second passe, le style 'valide' est appliqué en dernier en raison de l'ordre des opérations. J'ai deux questions à ce sujet. Il est important de noter que je suis extrêmement novice dans JavaScript et que j'ai déjà abusé des publications pour faire toute ma validation.

Question n ° 1:

est-il une bonne source de documentation pour la validation côté client? Je n'arrive pas à trouver quelque chose. Par exemple, d'où vient cet appel Page_ClientValidate()? Quels autres appels puis-je faire? Qu'en est-il de Page_Validators? Quels membres existent dans controltovalidate? Y a-t-il? Est-ce juste un élément DOM? Je sais ce que je veux faire dans ma tête pour résoudre ce problème:

get parent 

valid = true 

for each validator in parent 
    if validator does not validate 
     valid = false 
     break 

if valid 
    apply valid style 
else 
    apply invalid style 

Mais je ne sais même pas comment je peux le faire. Donc, encore une fois, y at-il une bonne documentation que je peux utiliser pour résoudre ce problème moi-même?

Question n ° 2:

En supposant que je reçois une bonne réponse à # 1, je vais trouver ce moi-même, mais ...

Comment puis-je faire ce que je décrit dans le pseudo-code ci-dessus ou n'est-ce pas possible comme je l'ai dit?

Répondre

0

Question n ° 1: MSDN is a great source of information on this, start here.

Question # 2: Essayez cette approche:

var val = Page_ClientValidate(); 

    if (!val) { 
     $(".invalid").removeClass("invalid"); //Remove invalids 
     var i = 0; 
     for (; i < Page_Validators.length; i++) { 
      if (!Page_Validators[i].isvalid) { 
       $("#" + Page_Validators[i].controltovalidate).parent().removeClass("valid").addClass("invalid"); 
      } else { 
       $("#" + Page_Validators[i].controltovalidate).parent(":not(.invalid)").addClass("valid"); 
       //Only apply to those not already invalid 
      } 
     } 
    } 

    return val; 
+0

fantastique, a travaillé après la mode! (Seule différence, mes styles de production sont appelés 'formLayout' pour valide et 'erreur formLayout' pour invalide, essayer de faire $ (". FormLayout error") ou $ (". FormLayout .error") ne fonctionne pas si chaud. – confuzicle

+0

@confuzicle - Les classes (séparées par des espaces) sont traitées de manière indépendante, vous pouvez simplement laisser formLayout sur l'élément, et simplement ajouter et supprimer le Classe "error". –

Questions connexes