jquery验证错误:.validate不是函数

时间:2013-11-06 22:17:44

标签: jquery jquery-validate

这可能是非常明显的,但它不起作用!我得到了:TypeError: $(...).validate is not a function而Firebug指出我:

电子邮件:“请输入有效的电子邮件地址”,

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js"></script>
<script type="text/javascript" src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/additional-methods.min.js"></script>

$(document).ready(function () {

    $("#register").click(function () {
        if ($("#frmRegisterWebuser").valid() === true) {
            $("#frmRegisterWebuser").submit();
        }
    });

    $("#frmRegisterWebuser").validate({
      rules:{
             reg_email:{
                        required: true,
                        email: true
                        },
             username: {
                       required: true,
                       minlength: 3
                       },
             zipcode: {
                       minlength: 5,
                       maxlength: 5
                       },
             reg_password: {
                       required: true,
                       minlength: 5
                       },
             confpass: {
                       required: true,
                       equalTo: "#reg_password",
                       }
      },
      messages:{
         username: {
                   required: "Please enter a username",
                   minlength: "Your username must consist of at least 3 characters"
                   },
         password: {
                   required: "Please provide a password",
                   minlength: "Your password must be at least 5 characters long"
                   },
        confirm_password: {
                          required: "Please provide a password",
                          minlength: "Your password must be at least 5 characters long",
                          equalTo: "Please enter the same password as above"
                          },
        email: "Please enter a valid email address",
      },

      submitHandler:function(){
          if($("#frmRegisterWebuser").valid() === true){
            email=$("#reg_email").val();
            password=$("#reg_password").val();
            username=$("#username").val();
            zipcode=$("#zipcode").val();
            default_private=$("#private").val();

             $.ajax({
                type: "POST",
                url: "webuser_register.php",
                data: "email="+email+"&pwd="+password+"&username="+username+"&default_private="+default_private+"&zipcode="+zipcode,
                success: function(response){
                  if(response == 'Registered')
                  {
                    $("#login_form").fadeOut("normal");
                $("#shadow").fadeOut();
                $("#profilex").html("<a id='logout' href='webuser_logout.php' title='Click to Logout'>Logout</a>");

                $("#shadow").slideUp();
                $("#register_webuser").slideUp();
                  }
                  else
                  {
                    $("#reg_add_err").html("Oops, there was a problem");
                  }
                },
                beforeSend:function()
                        {
                     $("#reg_add_err").html("Loading...")
                }
            });
          }
      }

    });

});
</script>

可能是因为我实际上并没有提交表格,而是在调整一些数据吗?

<div id="register_webuser">
        <div class="err" id="reg_add_err"></div>
  <form id="frmRegisterWebuser" action="login.php">
    <input type="hidden" id="private" name="private" />
        <label style="color:black;" for="reg_email" >Email:</label>
        <input type="email" id="reg_email" name="reg_email"  />
        <label style="color:black;" for="username" >Username:</label>
        <input type="text" id="username" name="username"  />
        <label style="color:black;" for="zipcode" >Zipcode:</label>
        <input type="text" id="zipcode" name="zipcode" />
        <label style="color:black;" for="reg_password" >Password:</label>
        <input type="password" id="reg_password" name="password"  />
        <label style="color:black;" for="confpass" >Confirm Password:</label>
        <input type="password" id="confpass" name="confpass"  />

        <div class="inputdata">
        <label style="color:black;" title="Share your shopping lists">Share:&nbsp;</label>
        <span>
        <div class="flatRoundedCheckbox" style="v-align:top;">
        <input type="checkbox" title="Share your shopping lists" id="share" name="share"  checked onclick="toggleShared(this.checked);" />
        </span>
        <label for="share" id="label_share"></label>
        <div class="clear"></div>
        </div>
        </div>

        <label></label><br/>
        <a id="register" href="#" class="greenbutton" >Register</a>
        <a id="reg_cancel_hide" href="#" class="greenbutton" >Cancel</a>
        <label></label><br/>

  </form>
</div>

2 个答案:

答案 0 :(得分:21)

我是有史以来最大的假人。尽管如此,也许这将有助于其他人。

问题是我在同一页面上包含了两个不同版本的jQuery:1.9.0和1.10.2

非常感谢大家的帮助!

答案 1 :(得分:0)

在我的情况下,我正在加载jquery 2次。评论一下并开始工作。

<script         
    src="<c:url value="/resources/plugins/jQuery/jQuery-2.1.4.min.js"/>">
</script>