Undefined是null或不是对象 - Jquery验证

时间:2010-09-05 12:40:13

标签: jquery validation undefined

在IE中使用jquery validate插件时遇到问题。验证表单时,我收到以下错误“undefined is null or not object”。

错误在第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 个答案:

答案 0 :(得分:1)

您应该调用本机form.submit()方法以避免错误和无限循环,如下所示:

form.submit();

默认情况下,验证插件会在<form>元素上添加submit处理程序,因此在submitHandler中触发该事件会导致验证再次运行,再次传递,冲洗/重复,无限循环。如果你看一下submitHandler documentation它会特别提到这个:

  

使用submitHandler处理某些内容,然后使用默认提交。请注意,“form”指的是DOM元素,这样就不会再次触发验证。