web-dev-qa-db-fra.com

jQuery valide le plugin sur DIV

J'essaie d'utiliser le plugin validate sur un div comme indiqué dans la réponse à cette question :

<script type="text/javascript">
  $("#pseudoForm").validate({
    onfocusout:true,
    rules:{
      first_name:"required",
      last_name:"required"
    }
  });
</script>
<!-- whatever -->
<div id="pseudoForm">
  <input type="text" name="first_name"/>
  <input type="text" name="last_name"/>
</div>

J'ai tout dans un formulaire. 

Je reçois un tas d'erreurs différentes sur différents navigateurs.

  • Firefox: validateur non défini 
  • IE8: 'settings' est null ou n'est pas un objet
  • Chrome: impossible de lire les "paramètres" de la propriété non définis

Toute aide appréciée!

30
JohnIdol

Ce n'est pas la réponse que vous voulez entendre, mais l'autre réponse est incorrecte (elle avait peut-être raison lorsqu'elle a été publiée, mais plusieurs modifications majeures du plug-in de validation jQuery ont été effectuées depuis lors). 

Le plug-in de validation est (actuellement) conçu pour fonctionner sur un <form>, et uniquement sur un <form>. Vous pouvez également noter que toute la documentation du plugin fait référence à un formulaire, pas à un autre conteneur générique.

Le plugin lui-même garde une trace de validator.currentForm en interne, qui fait référence à la this du sélecteur passé, obtenant .elements , etc. .

La solution globale/approche alternative ici: appelez .validate() sur l’élément <form> (le wrapper jQuery pour cela plutôt) directement, pas un autre conteneur. Si vous devez diviser votre <form>, utilisez <fieldset> elements, en utilisant éventuellement l'option ignore: ':hidden' dans .validate() si vous ne souhaitez pas valider les champs de saisie non visibles par l'utilisateur.

52
Nick Craver

Ouvrez jquery.validate.js ou jquery.validate.min.js et recherchez (ctrl + F) " label " et replaceAll avec votre balise requise: 

Exemple: div

puis effectuez la validation.

0
Rushabh Jariwala

Il vous manque un crochet de fermeture. Essayez ceci à la place:

$("#pseudoForm").validate({
    onfocusout:true,
    rules:{
        first_name:"required",
        last_name:"required"
    }
});
0
treeface