## jQuery.validator是一款非常不錯的表單驗證插件,驗證方式非常簡單方便
* * * * *
## 一、在元素的class屬性中添加需要驗證的規則,多個規則以空格隔開
~~~
<label>郵箱:</label>
<input class="required email" type="text" name="email">
~~~
>
required: // 必填
email: // 郵箱地址
url: // url地址
date: // 日期
dateISO: // ISO格式的日期(2014/08/27 或 2014-08-27)
number: // 數字(負數,正數,小數,整數)
digits: // 正整數
creditcard: // 信用卡
* * * * *
## 二、將要驗證的規則作為元素的屬性
~~~
<label for="userName">用戶名:</label>
<input name="userName" id="userName" required remote="ajax requestUrl">
<label for="password1">密碼:</label>
<input type="password" name="password1" id="password1" required rangelength="6,12">
<label for="password2">請再次輸入密碼:</label>
<input type="password" name="password2" id="password2" required equalTo="#password1">
~~~
~~~
required: // 必填
email: // 郵箱地址
url: // url地址
date: // 日期
dateISO: // ISO格式的日期(2014/08/27 或 2014-08-27)
number: // 數字(負數,正數,小數,整數)
digits: // 正整數
creditcard: // 信用卡
// 注意,在元素上將規則作為元素的屬性,除了 required ,以上規則都需要賦值,如:<input type="text" id="email" name="email" email="true">
minlength: // 輸入字符最小長度(中文算一個字符)
maxlength: // 輸入字符最大長度(中文算一個字符)
rangelength: // 輸入字符最小,最大長度(中文算一個字符)
min: // 數值最小值
max: // 數值最大值
range: // 數值最小,最大值
equalTo: // 再次輸入相同的值
remote: // 發送ajax請求驗證(常用案例就是在注冊時,驗證用戶名是否存在),
// 注:請求返回的 response === true || response === 'true',才算驗證通過,這需要后端的配合
~~~
## jQuery.validator內部做了很多處理,下面寫法都是可以的
~~~
<input type="password" name="password1" id="password1" required rangelength="6,12">
<input type="password" name="password1" id="password1" required="" rangelength="6, 12">
<input type="password" name="password1" id="password1" required rangelength="6 12">
<input type="password" name="password1" id="password1" required="true" rangelength="[6,12]">
~~~
## 同時還支持HTML5的type屬性
~~~
<input type="url" name="url" required>
<input type="number" name="number" required>
<input type="email" name="email" required>
~~~
> 注意:不支持 type="range" 的 input 控件,這是因為需要比較最大,最小值,而不只是簡單的正則驗證
* * * * *
## 四、在配置對象中,傳遞要驗證的規則
~~~
<form id="validForm">
<input type="text" name="userName">
<input type="text" name="email">
<input type="submit" value="提交">
</form>
~~~
~~~
$('#validForm').validate({
// 每一個name值對應一組規則
userName: {
required: true,
rangelength: [4,10],
remote: '' // ajax請求地址
},
email: {
required: true,
email: true
}
});
~~~
* * * * *
## 五、自定義驗證規則
使用 $.validator.addMethod( name, method, message ), 便可以添加自定義規則
如:我要自定義一條驗證手機號碼的規則:
~~~
$.validator.addMethod('mobile', function( value, element ){
// /^1\d{10}$/ 來自支付寶的正則
return this.optional( element ) || /^1\d{10}$/.test( value );
}, '請輸入正確的手機號碼');
~~~
* * * * *
## 六、其他( 處理頻繁請求ajax的操作 )
> 情景1:關注與取消關注,這種需求需要處理連續 多個ajax請求的關系
我之前的處理是上一個ajax請求完畢了,才去響應用戶的下一次單擊操作,即再次發送ajax請求
> 情景2:jQuery.validator源碼中的例子
如果驗證規則是 remote ,發送ajax請求驗證,由于插件在keyUp事件中會觸發驗證,那么當keyUp頻繁的觸發,ajax就會請求很多很多次啦,這就涉及到處理連續多個ajax請求的問題,
即:上一次ajax請求還沒完成,緊接著又發送ajax請求,這樣是不是有點凌亂呢,jQuery.validator是這樣做的,將上一次未響應的ajax請求中斷,這樣只會在最后一次keyUp事件中發送ajax驗證
比較:想想情景1的例子,第二種處理方式更好,因為情景1的處理,可能會在最后一次單擊事件無響應,不會觸發ajax請求,造成用戶體驗不好,這是因為在最后一次單擊事件中,上一次ajax請求還未完成(響應)
* * * * *
* * * * *
> # PS:
jQuery.validator有四種為表單控件添加驗證規則的方式,其內部實現是按 class, attribute, jQuery.fn.data, 配置對象依次疊加的,后面途徑添加的規則會覆蓋前面添加的規則;
如果有多個表單控件的name屬性值相同(屬性值包含''),除第一個表單控件會驗證,后面name屬性值相同的表單控件驗證將會忽略;
- 關于我們
- ApiCloud
- 支付模塊
- 微信支付--wxPay(客戶端)
- 微信支付--wxPay(服務端)
- 支付寶支付--aliPay(客戶端配置)
- 支付寶支付--aliPay(服務端配置)
- DoT模板
- 緩存模塊
- 監聽模塊
- 百度定位模塊
- 設置狀態欄字體顏色
- 選擇城市插件
- 跨頁面執行方法
- 安卓-點擊返回事件
- 上傳圖片模塊
- 點擊彈出放大圖片層
- 魅族手機apiready問題
- 分享
- 跨win或frm執行腳本
- 關于ios數字自動識別成手機號
- 百度地圖bMap
- 語音識別模塊
- tabBarMenu底部導航
- 第三方登錄
- QQ網站和appQQ賬號的統一問題解決
- 微信登錄
- QQ登錄
- 微博登錄
- 上拉加載、下拉刷新模塊
- 圖片緩存
- 文件和圖片緩存機制分享
- PHP
- 支付寶及時到賬
- no input file specified報錯解決
- thinkphp 整合kindeditor
- 整合tpshop微信模塊到thinkcmf中
- thinkphp3.1.3整合支付寶
- 網站接入QQ OAuth2.0登錄教程
- ThinkPHP整合百度編輯器Ueditor
- PHP加快執行效率的寫法規范
- ThinkPHP操作大全
- PHP操作大全
- Thinkphp中SQL操作返回值
- php5.3 foreach 使用&(與運算符)引用賦值要注意的問題
- mysql給字段追加值
- 阿里大魚短信平臺接入
- Navicat 導出 Mysql 數據字典
- php 面向對象全面教程
- PHP5下調用SOAP
- PHP處理時間格式添加空格
- 偽裝URL請求(.htaccess)
- url請求參數加解密
- JS插件
- artDialog彈窗-頁面傳值
- jQuery點擊遮罩彈出層固定居中
- jeBox原生彈窗
- bxslider輪播
- js生成指定位數隨機數
- 發送短信倒計時
- js調試
- jQuery.validator 表單驗證規則
- Swiper 輪播
- 獲得焦點時-圖片抖動
- uploadify無刷新上傳圖片
- 導航下拉隱藏上拉顯示
- 獲得焦點時-加黑色蒙版
- jquery.qrcode.js生成二維條形碼(支持中文)
- jquery.qrcode.js生成二維條形碼(官方不支持中文)
- nth-child 選擇器
- 無刷新點擊實現加載更多數據
- 刷新頁面方法
- 判斷滾動條向上向下
- 跨瀏覽器復制jQuery-zclip
- js校驗表單后提交表單的三種方法
- 用JS判斷下拉框是否選中
- div中滾動
- 提交時彈出模態框
- 當圖片不顯示時替換方法
- 前端
- CSS3
- HTML5
- css技巧
- 移動端rem
- Flex布局
- 電商詳情滾動條監聽
- VueCircleMenu圓環按鈕
- iframe自適應頁面高度
- 百度Echart
- input:radio改變選中顏色
- Jquery
- 響應式布局基本實現Media Query
- 循環輸出只輸出新內容
- 小程序
- wx.request坑
- 概要
- git操作
- 本地記住密碼
- 操作
- 生成ssh公鑰 記住密碼
- git避坑
- ES6學習手札
- 調試小插件
- 谷歌插件Postman
- PHP調試助手
- WordPress
- 緩存服務器Redis
- 在線代碼運行 Docker
- 在ubuntu下怎樣安裝https
- BrowserSync 瀏覽器同步測試工具
- getmarkman高效的設計稿標注、測量工具
- PHPstrom軟件
- 服務器
- linux 安裝搭建服務器配置及nginx配置
- tpshop的nginx 服務器配置方法
- (服務器訪問文件404解決辦法)IIS 之 添加MIME擴展類型及常用的MIME類型列表
- mysql部分
- mysql緩存
- MySql監控工具--mytop
- MySql主從搭建
- mysql優化
- Mysql 復制 (主從復制)
- iOS開發筆記 - 上線流程
- VUE避坑指南
- 從零開始學Vue
- Vue-cli
- Webpack
- VUE小記
- npm打包空白
- 打包背景圖片/項目圖片不顯示
- VUE避坑指南/elementUI upload 自定義http-request上傳
- 關于watch監聽路由重復加載方法
- 解決加載內容的時候閃動問題
- vuecli沒有network訪問地址
- python學習
- python初始
- pytho內置函數大全
- win10 播放器播放TS文件問題
- 設計網站
- VUE避坑指南/VUE-CLI部署空白
- swiper使用問題
- uni-app學習手冊
- 目錄結構
- layUI
- nodesass版本sassloader版本問題