Jquery验证插件 - TypeError:$(...)。validate不是函数

时间:2014-02-07 20:09:22

标签: javascript jquery jquery-validate

我的脚本抛出错误:

  

TypeError:jQuery.validator未定义additional-methods.js:20   TypeError:$(...)。validate不是函数index.php:115

可能我在jQuery代码中有错误。

<head>
<script type="text/javascript" src="js/jquery-1.10.2.js"></script>
<script type="text/javascript" src="js/jquery.form.js"></script>
<script src="http://jquery.bassistance.de/validate/additional-methods.js"></script>
</head>
<body>
            <form id="registerForm" method="post" action="logrej.php">
            <input name="login" type="text"/>
            <input name="nick" type="text"/>
            <input type="password" id="passw" name="password"/>
            <input type="password" name="retype" />
            <input type="submit" value="Zarejestruj!" />
            </form>
            <script>

                $("#registerForm").validate({
                    rules: {
                        login: {
                            required:true,
                            rangelenght: [4,20],
                            remote:"look.php"
                        },
                        nick : {
                            required:true,
                            rangelenght:[4,20],
                            remote:"look.php"
                        },
                        password: {
                            required:true,
                            rangelenght:[4.20]
                        },
                        retype: {
                            required:true,
                            equalTo:"#passw"
                        }
                    },
                    messages:{
                        login:{
                            required:"To pole jest wymagane!"
                        }
                    }
                })

            </script>

10 个答案:

答案 0 :(得分:77)

您没有加载验证插件。你需要:

<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.11.1/jquery.validate.min.js"></script>

将它放在加载其他方法的行之前。

此外,您还应该从CDN获取其他方法,而不是jquery.bassistance.de。

其他错误:

[4.20]

应该是

[4,20]

rangelenght:

应该是:

rangelength:

答案 1 :(得分:2)

通过将http://ajax ...更改为https://ajax ...(将S添加到http)来解决我的问题

https://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.js

答案 2 :(得分:1)

看起来你得到的JavaScript错误可能是由

引起的
password: {
    required:true,
    rangelenght:[4.20]
},

由于[4.20]应为[4,20],我猜测它会丢失additional-methods中的验证码,从而给出您发布的类型错误。< / p>

编辑:正如其他人在下面的评论中所指出的那样rangelenght也拼写错误&amp; jquery.validate.js库似乎丢失了(假设它未编译到您的其他资产中)

答案 3 :(得分:1)

我有同样的问题。我将jquery-validation用作npm模块,对我来说,解决方法是在我的js文件的开头要求该模块:

require('jquery-validation');

答案 4 :(得分:1)

对我来说,问题出在require('jquery-validation'),是我在那个js文件的开头添加的,该方法使用Validate方法作为 npm模块所必需的

不幸的是,当Web pack编译js文件时,它们没有顺序,因此validate方法在定义它之前!出现错误

最好使用另一个js文件来编译该库,或者使用本地验证方法文件甚至使用CDN,但在所有情况下,请确保您之前附加了jquery

答案 5 :(得分:1)

"validator.min.js" 你需要在“jquery-3.4.1.min.js”之后导入这个JS文件。对你来说,版本可能会改变,但这种方式对我有用。

第 1 步:您的项目链接文件或可能是 CDN

第 2 步:

放validator.min.js CDN链接或项目JS文件夹链接。

就这些,希望能帮到你。

答案 6 :(得分:0)

additional-methods.js之前加入jquery.validate.js

那里定义了

$.validate()方法

答案 7 :(得分:0)

您没有包含基本jQuery验证库:

<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.js"></script>

将其放在附加方法库之前。 (顺便说一句,这是一个托管版本,如果你愿意,可以下载你自己的版本)

答案 8 :(得分:0)

如果使用VueJS,请首先导入jQuery扩展的所有js依赖项,然后再导入$ ......

import "../assets/js/jquery-2.2.3.min.js"
import "../assets/js/jquery-ui-1.12.1.min.js"
import "../assets/js/jquery.validate.min.js"
import $ from "jquery";

然后,您需要使用从VueJS原型方法中全局定义的自定义包装调用的javascript函数中使用jquery。

这可以防止使用jQuery和jQuery UI与VueJS对抗。

Vue.prototype.$fValidateTag = function( sTag, rRules ) 
{
    return ValidateTag( sTag, rRules );
};

function ValidateTag( sTag, rRules )
{
    Var rTagT = $( sTag );
    return rParentTag.validate( sTag, rRules );
}

答案 9 :(得分:0)

我遇到了同样的错误,但原因完全不同。

我一直以正确的顺序加载库,但问题是我将 jQuery("#contact_form").validate(); 包裹在 jQuery(document).ready(function () {}); 中。

当我把它放在外面时,错误消失了。