2012-10-11 2 views
1

Mon client a demandé que j'utilise un plugin de validation spécifique (valid8), qui semble faire uniquement la validation en ligne sur le focus. La documentation sur le plugin est assez faible, donc j'espère que quelqu'un d'autre a de l'expérience avec ce plugin particulier et ils peuvent m'aider.Valid8 jquery plugin: validation de champ dépendant?

C'est un formulaire de contact, où les utilisateurs doivent spécifier leur méthode de contact préférée. Si elles spécifient le courrier électronique, le champ de saisie du courrier électronique doit être validé. s'ils spécifient un téléphone, le champ de saisie du téléphone doit être validé. Je peux sélectivement AJOUTER la validation en fonction de la radio sélectionnée, mais je ne peux pas SUPPRIMER la validation si l'utilisateur modifie sa préférence de contact avant de soumettre le formulaire.

Existe-t-il un moyen de supprimer la validation valid8 d'un champ après son ajout à l'aide de ce plugin? J'ai essayé .unbind (valid8), mais cela ne fonctionne pas car unbind est pour les événements, et valid8 n'est pas un événement. Dois-je dissocier manuellement tous les événements et supprimer le balisage supplémentaire du champ?

Edit: http://jsfiddle.net/sjc8611/5d3CT/

Répondre

1

Je ne l'ai pas utilisé ce plugin mais en regardant à la source, il semble que l'information sur la validation des #element sont stockées dans les données arbitraires settings, de sorte que vous pouvez essayer:

$('#element').data('settings', null); 

Et voyez ce que ça fait. Il peut générer des erreurs si et si elle ne vous pouvez également supprimer les événements associés avec, qui sont:

keyup 
blur 
click (for checkbox) 

Vous pouvez le faire avec juste une commande comme ceci:

$('#element').unbind(); 

Mais cette volonté supprimer TOUS les événements pour cet élément et encore une fois peut causer des problèmes, c'est pourquoi j'ai fourni la liste ci-dessus afin que vous puissiez les supprimer un par un si vous avez besoin.

Ceci est autant que je peux dire sans jamais utiliser cela, si cela ne fonctionne pas, vous devriez poster un exemple en ligne (préférablement sur jsFiddle) afin que nous puissions y jeter un coup d'oeil. Si tout le reste échoue, vous pouvez envoyer un courriel à l'auteur du plugin.

+0

http://jsfiddle.net/sjc8611/5d3CT/ aller à la ville. J'ai essayé de délier et de définir les paramètres à null. Si je ne le découvre pas bientôt, je vais écrire mon propre script de validation. Quel est le point dans l'utilisation d'un plugin qui ne répond pas réellement à vos besoins? * soupir * –

+0

http://jsfiddle.net/sjc8611/5d3CT/3/ J'ai supprimé tous les événements et les données, détaché l'élément de son conteneur, effacé la classe du conteneur, vidé le conteneur, puis lu le élément. Cela me semble excessif, mais j'ai obtenu la fonctionnalité désirée. Merci pour la suggestion! –

1

Vous pouvez définir la validation à une fonction qui retourne toujours vrai:

$("#element").valid8({ 
    jsFunctions: [{ 
     function: alwaysTrue, values: function() { return true; } 
    }] 
}); 
+0

J'ai essayé votre suggestion; il ne semble pas remplacer ce qui a été précédemment défini pour l'élément. http://jsfiddle.net/sjc8611/5XrSZ/ L'ai-je implémenté incorrectement? –