Message “this est indéfini” à l’aide du plugin jQuery validate

J’ai commencé à utiliser le plugin jQuery validate. J’avais quelques problèmes avec l’affichage des messages d’erreur et je voulais créer une page de test où je pourrais expérimenter plusieurs choses. Bien que la même configuration fonctionne pour moi hier, je reçois maintenant le message suivant:

this[0] is undefined 

En regardant le code jQuery, il échoue dans la section suivante (ligne spécifique mise en surbrillance):

 valid: function() { if ( $(this[0]).is('form')) { return this.validate().form(); } else { var valid = true; **var validator = $(this[0].form).validate();** this.each(function() { valid &= validator.element(this); }); return valid; } } 

en le regardant, il doit penser que mon validateur n’est pas un formulaire, mais il l’est. Je ne comprends pas vraiment ce qui se passe. Le code n’échoue que lorsque vous essayez d’imprimer le résultat de la méthode valid () sur la console. Voici mon code jusqu’à présent. Reconnaissant pour toute aide.

    th { text-align: center; } .labelCol { width: 60px; }     $('#myform').validate({ rules: { thisval: "required" } }); console.info($('#myform').valid());    
Header Section
This Title

Votre formulaire #myform n’est pas chargé lors de l’exécution du script. Par conséquent, $('#myform') ne correspond à rien. Enveloppez votre script dans un gestionnaire d’événements prêt.

  

Enveloppez votre code dans une fonction de préparation de document telle que:

 $(function() { $('#myform').validate({ rules: { thisval: "required" } }); console.info($('#myform').valid()); }); 

La même chose s’est produite ici. Pour moi, c’était une faute de frappe dans mon code:

 $(document).ready(function(){ //START of validate $('#reply').validate({ rules:{ message:{ required: true, }, }, submitHandler: function(form) { var data = $("#reply").serialize(); $.ajax({ type:"POST", url:"ajax/scripts/msg_crt.php", data:data, success:function(data){ alert("Loaded"); } }); } }); //END of validate }); $(document).on('click','#send', function(){ if($('#replay').valid()){// <--- Here is my selector typo $("#replay").submit(); // <--- Here is my selector typo } return false; }); 

Dans mon cas, cela arrive quand vous oubliez de spécifier l’id dans la balise de formulaire où vous l’avez spécifié dans la méthode validate.