2010-11-05 6 views
5

Je cherche à utiliser les attributs de données html5 pour transmettre les règles de validation à jquery.validate en tant qu'interruption jusqu'à ce que le plugin soit mis à jour avec le support HTML5. J'utilise jquery 1.4.2, jquery.validate 1.7 et jquery.validate 2.1. Dans mon code HTML J'utilise un code tel que ceci:Données jquery.validate, jquery.metadata et html5

<input name="foo" type="text" data-validate="{required:true,digits:true}" /> 

Dans mon jQuery je fais ce qui suit:

<script type="text/javascript"> 
$.metadata.setType ("html5"); 
$(function() 
{ 
    $('#myForm').validate ({debug:true}); 
}); 
</script> 

Cela provoque seulement un message d'erreur, validator.methods [méthode] est J'ai fait un metadata() sur l'élément avec l'attribut data-validate, et j'ai obtenu un objet retourné nommé validate avec mes attributs, donc je sais que les métadonnées trouvent l'attribut et le chargent, mais le plugin validate ne peut pas sembler le gérer. Si je retourne à class = "{validate: {...}}" et commente la ligne qui configure les métadonnées pour utiliser HTML 5, tout fonctionne comme il se doit.

Est-ce que je fais quelque chose de mal, ou y a-t-il un problème avec les plugins validate et/ou metadata?

Répondre

4

Essayez:

$.metadata.setType("html5"); 
$('#myForm').validate({ 
    meta: "validate" 
}); 

http://jsfiddle.net/petersendidit/5YND2/

+0

Cela semble fonctionner, mais je vais devoir l'essayer lundi au travail pour être sûr. Aussi, merci pour le lien vers le site jsfiddle, je vais devoir m'en souvenir. Cela ressemble à une ressource utile. – GordonM

+0

Il fonctionne en effet dans le code live, alors merci beaucoup. – GordonM

9

au cas où quelqu'un traverse cela en utilisant une version plus récente de jQuery, jQuery Validation et le plug-in de métadonnées jQuery, tous les documents que j'ai trouvé pour l'utilisation de ces ensemble n'est pas à jour. Bien que le plugin jQuery Validate puisse toujours utiliser les métadonnées jQuery, les nouvelles versions de jQuery Metadata ne prennent plus en charge "html5" en tant que type car jQuery prend désormais en charge nativement les attributs de données HTML5 comme source de métadonnées. Cependant, jQuery Validate n'a pas été mis à jour pour l'utiliser. La solution pour cela (au moins jusqu'à ce que jQuery Validate soit mis à jour pour prendre en charge la prise en charge intégrée des métadonnées à l'aide des attributs de données est d'utiliser le type 'attr' et de pointer directement sur votre attribut de données, par exemple:

.
$.metadata.setType("attr", "data-validate"); 
$("form").validate(); 

avis il n'y a pas besoin de passer la balise « meta », car la bibliothèque de métadonnées va directement à l'attribut correct pour lire les valeurs Voici un jsFiddle modifié à l'aide des versions mises à jour de toutes les bibliothèques:

http://jsfiddle.net/Wcu4L/

+1

Puis-je upvote ce 100? J'ai passé une demi-journée à essayer de trouver le méta de l'attribut de classe et ce commentaire a résolu le problème. Merci! – Matt

+0

D'accord avec Matt, cela a aidé beaucoup de temps. Surpris de ne pas voir l'attribut de données implémenté le plugin lui-même ... – daddywoodland

+0

Solution brillante à un problème non documenté, qui rend juste fou. +1 en étant capable d'upvote ce 100. –