我的脚本抛出错误:
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>
答案 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 () {});
中。
当我把它放在外面时,错误消失了。