2012-04-06 2 views
0

J'aime la validation de jQuery pour sa simplicité et son extensibilité. Dans certains de mes derniers cas d'utilisation, il semblait cependant atteindre ses limites. Il y a certaines fonctionnalités qui me manquent. Ma question: existe-t-il une bibliothèque open-source qui supporte ces fonctionnalités, ou y a-t-il quelque chose de remarquable dans le développement? Ou avez-vous des astuces intelligentes sur la façon d'étendre/utiliser le cadre de validation pour couvrir ces fonctionnalités?jQuery validation extended - avertissements, option ignore, spécifique à l'action

caractéristiques: Missed

  • Pour certains domaines dont j'ai besoin de définir des règles "d'avertissement" plutôt que erros. S'ils évaluent à faux, un message devrait être affiché mais il devrait contenir un lien "ignorer" qui permet à l'utilisateur de désactiver la règle (semblable à l'orthographe de MS Word où l'utilisateur peut choisir d'ignorer une faute d'orthographe). Si la validation a empêché l'envoi du formulaire, idéalement le formulaire est immédiatement envoyé lorsque l'utilisateur clique sur "Ignorer".

  • Les règles doivent dépendre de l'action que je veux exécuter avec le formulaire. Tandis que pour une action les champs ne sont pas encore requis, ils peuvent être requis pour exécuter une autre action.

À titre d'exemple pour les deux cas, prendre une forme « envoyer e-mail »:

  • Le champ « sujet » est pas forcément nécessaire, mais si elle est vide, l'utilisateur aurait manqué . Idéalement, le cadre de validation bloque l'envoi du formulaire et affiche un message tel que "Vous avez manqué le sujet Ignorer". En cliquant sur "Ignorer", le message est désactivé et le formulaire est envoyé.
  • Le champ "à" est définitivement requis pour l'envoi de l'e-mail. Mais si le formulaire fournit un bouton «enregistrer le brouillon», l'utilisateur ne doit pas être obligé de remplir ce champ pour enregistrer le brouillon.

Répondre

1

Pour le numéro deux, c'est étonnamment facile. Plutôt que de simplement soumettre, vous avez chaque bouton appel une fonction qui soumet à la fin. Dans cette fonction, vous définissez une variable jquery pour savoir de quel bouton elle provient et vous utilisez le contenu de cette variable dans la partie de l'appel jQuery.validator.addClassRules() qui détermine si vous souhaitez ou non appliquer l'exigence de validation. Le premier est plus délicat, mais vous pouvez définir le texte de validation - ce qui signifie que vous devriez être en mesure d'inclure un lien dedans. Avoir le lien déclencher une fonction qui, encore une fois, change une variable que la logique apply/not-apply utilise (et éventuellement resubmits - ou, alternativement, si vous avez une page avec plus d'un, revalide (supprimant ainsi le message d'erreur) et leur permet de soumettre plus tard avec un bouton différent).

Exemple rapide sur ce à quoi l'addClassRules peut ressembler.

jQuery.validator.addClassRules("toField", 
{ 
    required: { 
     depends: function(element) 
     { 
      return $submitNotSave; 
     } 
    } 
}); 
+0

Bonjour Ben. Merci pour les conseils! – chiccodoro

+0

Je l'ai testé et fait un pas de plus en introduisant le concept d'actions (ressemble au modèle de commande GoF). Une action définit les noms de tous les champs obligatoires. C'est ce que les tests "dépend". Exemple en direct: http://jsfiddle.net/Gmd9n/ – chiccodoro

+0

... et un exemple pour l'ignorer: http://jsfiddle.net/xMuVh/ – chiccodoro

Questions connexes