[英]Jquery validation plugin - TypeError: $(…).validate is not a function
我的腳本拋出錯誤:
TypeError: jQuery.validator is undefined additional-methods.js:20 TypeError: $(...).validate is not a function 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>
您沒有加載驗證插件。 你需要:
<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:
對我來說,通過將http://ajax ... 更改為https://ajax ... 解決的問題(向 http 添加 S)
https://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.js
在additional-methods.js
之前包含jquery.validate.js 。
$.validate()
方法在那里定義
看起來你得到的 JavaScript 錯誤可能是由
password: {
required:true,
rangelenght:[4.20]
},
由於[4.20]
應該是[4,20]
,我猜這是在additional-methods
丟棄驗證代碼,因此給出了您發布的類型錯誤。
編輯:正如其他人在下面的評論中指出的那樣, rangelenght
也拼錯了, jquery.validate.js
庫似乎丟失了(假設它沒有編譯到您的其他資產之一中)
您沒有包含基本的 jQuery 驗證庫:
<script src="http://ajax.aspnetcdn.com/ajax/jquery.validate/1.9/jquery.validate.js"></script>
把它放在附加方法庫之前。 (順便說一句,這是托管版本,如果需要,請下載自己的版本)
我有同樣的問題。 我使用 jquery-validation 作為 npm 模塊,而我的修復方法是在我的 js 文件的開頭要求該模塊:
require('jquery-validation');
對我來說,問題來自require('jquery-validation')
我在那個 js 文件的請求中添加了 Validate 方法,這是作為npm 模塊所必需的
不幸的是,當 webpack 編譯 js 文件時,它們不是有序的,因此 validate 方法在定義它之前! 錯誤來了
所以最好使用另一個 js 文件來編譯這個庫或使用本地驗證方法文件,甚至使用 CDN 但在所有情況下,請確保您之前附加了 jquery
“validator.min.js” 你需要在“jquery-3.4.1.min.js”之后導入這個JS文件。 對你來說,版本可能會改變,但這種方式對我有用。
第 1 步:您的項目鏈接文件或可能是 CDN
第2步 :
放validator.min.js CDN鏈接或項目JS文件夾鏈接。
就這些,希望能幫到你。
如果使用 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 );
}
我有同樣的錯誤,這是出於完全不同的原因。
我一直以正確的順序加載庫,但問題是我正在包裝jQuery("#contact_form").validate();
內部jQuery(document).ready(function () {});
.
當我把它放在外面時,錯誤消失了。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.