Не определено, является нулем или не объектом - Jquery validate - PullRequest
2 голосов
/ 05 сентября 2010

У меня проблема при использовании плагина jquery validate с IE. При проверке формы я получаю следующее сообщение об ошибке: «undefined равен null или не является объектом».

Ошибка в строке 431: " $ (" # signup_meeta "). Submit (); "

$(document).ready(function() {
 $("#pseudobox").hide();
 $("#passwdbox").hide();
 $("#emailbox").hide();
 $("#sexebox").hide();
 $("#originbox").hide();
 $("#birthdaybox").hide();
 $("#countrybox").hide();
 $("#regionbox").hide();
 $("#dptbox").hide();
 $("#acceptbox").hide();

 $("#dpt").hide();

 dynamicSelectRegion(); 
 $("#fromc").change(function() {
   dynamicSelectRegion();
 });

 $('a[rel*=facebox]').facebox();

 $("#signup_meeta").validate({
  ignore : ":hidden",
  rules: {
   nickname : {
    required : true,
    minlength : 5,
    maxlength : 15,
    remote : "?q=register/CheckUsername",
    nowhitespace : true,
    nospecialcar : true
   },
   passwd : {
    required : true,
    minlength : 5
   },
   email : {
    required : true,
    email : true,
    nowhitespace : true,
    nospecialcar : true
   },
   gender : {
    required : true
   },
   origin : {
    required : true
   },
   birth_day : {
    required : true
   },
   birth_month : {
    required : true
   },
   birth_year : {
    required : true
   },
   fromc : {
    required : true
   },
   region : {
    required : true
   },
   department : {
    required: true
   },
   accept_cgu : {
    required : true
   }
  },
  messages: {
   nickname : {
    required : "Veuillez entrer votre pseudo svp",
    minlength: "Votre pseudo doit contenir au - 5 caractères",
    maxlength: "Votre pseudo doit contenir au + 15 caractères",
    remote: "Ce pseudo n'est pas disponible. Modifiez svp",
    nowhitespace: "Ce champ ne doit pas contenir d\'espace",
    nospecialcar: "Ce champ ne doit pas contenir de caractère spécial"
   },
   passwd : {
    required : "Veuillez entrer votre mot de passe svp",
    minlength: "Votre mot de passe doit contenir au - 5 caractères"
   },
   email : {
    required : "Veuillez entrer votre adresse email svp",
    nowhitespace: "Ce champ ne doit pas contenir d\'espace",
    nospecialcar: "Ce champ ne doit pas contenir de caractère spécial"
   },
   gender : {
    required : "Veuillez sélectionner votre sexe svp"
   },
   origin : {
    required : "Veuillez sélectionner votre pays d\'origine svp"
   },
   birth_day : {
    required : "  Votre jour de naissance ?"
   },
   birth_month : {
    required : "  Votre mois de naissance ?"
   },
   birth_year : {
    required : "  Votre année de naissance ?"
   },
   fromc : {
    required : "Veuillez sélectionner votre pays svp"
   },
   region : {
    required : "Veuillez sélectionner votre région svp"
   },
   department : {
    required : "Veuillez sélectionner votre département svp"
   },
   accept_cgu : {
    required : "Veuillez accepter les CGUs svp" 
   }
  },
  submitHandler: function(form) {
   **$("#signup_meeta").submit();**
   return false;
  }

 });

})

Может кто-нибудь помочь мне, пожалуйста?

С наилучшими пожеланиями, Салим

1 Ответ

1 голос
/ 05 сентября 2010

Вы должны вызвать собственный метод form.submit(), чтобы избежать ошибок и бесконечного цикла, например:

form.submit();

Плагин проверки по умолчанию добавляет обработчик submit к элементу <form>, поэтому запуск этого события в submitHandler приведет к повторному запуску проверки, повторной передаче, полосканию повторить, и цикл бесконечно. Если вы посмотрите на документацию submitHandler , то это упомянет это конкретно:

Используйте submitHandler для обработки чего-либо, а затем используйте отправку по умолчанию. Обратите внимание, что «форма» относится к элементу DOM, поэтому проверка больше не запускается.

...