Vuelidate

Vuelidate

Vuelidate是一款簡單輕量級的基于模塊的Vue.js驗證插件廓块。

安裝

安裝很簡單,用npm來安裝只需要一句話:

npm install vuelidate --save
npm i -S vuelidate               //簡寫

使用

在main.js中導(dǎo)入庫并用作Vue插件剑肯,以便在包含驗證配置的所有組件上全局啟用該功能:

import Vue from 'vue'
import Vuelidate from 'vuelidate'

Vue.use(Vuelidate)//安裝插件

內(nèi)置驗證規(guī)則

  • required: 需要非空數(shù)據(jù)。檢查僅包含空格的空數(shù)組和字符串观堂。
  • maxLength:要求輸入具有最大指定長度(包括最大值)让网。適用于數(shù)組。
  • minLength:要求輸入具有最小指定長度(包括最小值)师痕。適用于數(shù)組溃睹。
  • email: 接受有效的電子郵件地址。請記住七兜,您仍然需要在服務(wù)器上進(jìn)行仔細(xì)驗證丸凭,因為無法發(fā)送驗證電子郵件地址是否是真實的福扬。
  • between: 檢查數(shù)字或日期是否在指定范圍內(nèi)腕铸。最小值和最大值都包括在內(nèi)。
  • ipAddress: 接受點分十進(jìn)制表示形式的有效IPv4地址铛碑,如127.0.0.1狠裹。
  • alpha: 只接受字母字符。
  • alphaNum: 只接受字母數(shù)字汽烦。
  • numeric: 只接受數(shù)字涛菠。
  • sameAs: 檢查給定屬性是否相等。
  • url: 只接受網(wǎng)址撇吞。
  • or: 當(dāng)至少有一個提供的驗證器通過時通過俗冻。
  • and: 所有提供的驗證器都通過時通過。
  • requiredIf: 僅當(dāng)提供的屬性或謂詞為真時才需要非空數(shù)據(jù)牍颈。
  • requiredUnless: 僅當(dāng)提供的屬性或謂詞為假時才需要非空數(shù)據(jù)迄薄。
  • minValue: 要求輸入具有指定的最小數(shù)值或日期。
  • maxValue: 要求輸入具有指定的最大數(shù)值或日期煮岁。

自定義驗證規(guī)則(Custom Validators)

除了使用Vuelidate自帶的內(nèi)置驗證規(guī)則外還可以使用自定義規(guī)則滿足需求讥蔽。

最簡單的方法就是直接在當(dāng)前文件的script里面設(shè)置校驗規(guī)則,當(dāng)然也可以單獨的寫一個my-validators.js的文件画机,無論是單獨寫還是抽離出來都需要引入.詳情請參考 vuelidate的自定義驗證規(guī)則

import { regex } from 'vuelidate/lib/validators/common'
或者
import { helpers } from 'vuelidate/lib/validators'

例子:

register.vue

//1. 先引入需要用到的驗證規(guī)則
import { required, maxLength, sameAs } from 'vuelidate/lib/validators'
import { regex } from 'vuelidate/lib/validators/common'
var phone = regex('phoneNumber', /^1(3|4|5|7|8)\d{9}$/) // 手機號碼校驗

export default {
    data () {
        return {
            user: {
                username: '',
                password: '',
                confirmPassword: '',
                phone: '',
                phoneCode: ''
            }
        }
    },
    // 2.定義驗證字段的規(guī)則
    validations: {
        user: {
            username: {
                required,
                // minLength: minLength(2),
                maxLength: maxLength(20),
                async isUnique (value) { // 異步校驗用戶名是否已注冊
                    if (value === '') return true
                    const response = await fetch(`/api/unique/name/${value}`)
                    return Boolean(await response.json())
                }
            },
            password: {
                required
            },
            confirmPassword: {
                sameAsPassword: sameAs('password') // 校驗密碼是否一致
            },
            phone: {
                required,
                phone  // 直接就是用的上面const設(shè)置的校驗規(guī)則冶伞,自定義校驗
            },
            phoneCode: {
                required
            }
        }
    }
}

register.vue的html部分

<div :class="{ 'form-group--error': $v.user.password.$error }" >
    <input v-model.trim="$v.user.password.$model" 
           @blur="$v.user.password.$touch()" class="input-line" 
           type="password"  
           placeholder="請設(shè)置密碼">
    <span class="form-group__message" v-if="!$v.user.password.required">密碼不能為空</span>
</div>
<div :class="{ 'form-group--error': $v.user.confirmPassword.$error }">
    <input v-model.trim="$v.user.confirmPassword.$model" 
           class="input-line" type="password" 
           placeholder="請確認(rèn)密碼">
    <span class="form-group__message" 
          v-if="!$v.user.confirmPassword.sameAsPassword">兩次輸入的密碼不一致</span>
</div>
<div :class="{ 'form-group--error': $v.user.phone.$error }">
    <input v-model.trim="$v.user.phone.$model" 
           @blur="$v.user.phone.$touch()" class="input-line" 
           placeholder="請輸入手機號碼">
    <span class="form-group__message" v-if="!$v.user.phone.required">手機號碼不能為空</span>
    <span class="form-group__message" v-if="!$v.user.phone.phone">請輸入正確的手機號碼</span>
</div>

Register.vue的css部分

/* 表單驗證樣式 */
.form-group__message{
    display: none;
    font-size: 12px;
    color: #CC3333;
}
.form-group--error > input + .form-group__message {
    display: block;
    color: #CC3333;
}
.form-group--error input, .form-group--error input:focus, .form-group--error input:hover, .form-group--error textarea {
    border-color: #CC3333;
}
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市步氏,隨后出現(xiàn)的幾起案子响禽,更是在濱河造成了極大的恐慌,老刑警劉巖,帶你破解...
    沈念sama閱讀 219,039評論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件芋类,死亡現(xiàn)場離奇詭異瀑焦,居然都是意外死亡,警方通過查閱死者的電腦和手機梗肝,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評論 3 395
  • 文/潘曉璐 我一進(jìn)店門榛瓮,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人巫击,你說我怎么就攤上這事禀晓。” “怎么了坝锰?”我有些...
    開封第一講書人閱讀 165,417評論 0 356
  • 文/不壞的土叔 我叫張陵粹懒,是天一觀的道長。 經(jīng)常有香客問我顷级,道長凫乖,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,868評論 1 295
  • 正文 為了忘掉前任弓颈,我火速辦了婚禮帽芽,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘翔冀。我一直安慰自己导街,他們只是感情好,可當(dāng)我...
    茶點故事閱讀 67,892評論 6 392
  • 文/花漫 我一把揭開白布纤子。 她就那樣靜靜地躺著搬瑰,像睡著了一般。 火紅的嫁衣襯著肌膚如雪控硼。 梳的紋絲不亂的頭發(fā)上泽论,一...
    開封第一講書人閱讀 51,692評論 1 305
  • 那天,我揣著相機與錄音卡乾,去河邊找鬼翼悴。 笑死,一個胖子當(dāng)著我的面吹牛说订,可吹牛的內(nèi)容都是我干的抄瓦。 我是一名探鬼主播,決...
    沈念sama閱讀 40,416評論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼陶冷,長吁一口氣:“原來是場噩夢啊……” “哼钙姊!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起埂伦,我...
    開封第一講書人閱讀 39,326評論 0 276
  • 序言:老撾萬榮一對情侶失蹤煞额,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體膊毁,經(jīng)...
    沈念sama閱讀 45,782評論 1 316
  • 正文 獨居荒郊野嶺守林人離奇死亡胀莹,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,957評論 3 337
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了婚温。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片描焰。...
    茶點故事閱讀 40,102評論 1 350
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖栅螟,靈堂內(nèi)的尸體忽然破棺而出荆秦,到底是詐尸還是另有隱情,我是刑警寧澤力图,帶...
    沈念sama閱讀 35,790評論 5 346
  • 正文 年R本政府宣布步绸,位于F島的核電站,受9級特大地震影響吃媒,放射性物質(zhì)發(fā)生泄漏瓤介。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,442評論 3 331
  • 文/蒙蒙 一赘那、第九天 我趴在偏房一處隱蔽的房頂上張望刑桑。 院中可真熱鬧,春花似錦漓概、人聲如沸漾月。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至蜓陌,卻和暖如春觅彰,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背钮热。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評論 1 272
  • 我被黑心中介騙來泰國打工填抬, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人隧期。 一個月前我還...
    沈念sama閱讀 48,332評論 3 373
  • 正文 我出身青樓飒责,卻偏偏與公主長得像,于是被迫代替她去往敵國和親仆潮。 傳聞我的和親對象是個殘疾皇子宏蛉,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 45,044評論 2 355

推薦閱讀更多精彩內(nèi)容

  • vuelidate是一個非常強大的基于vue的表單驗證框架拾并,但是奈何其文檔寫的很一般,自定義驗證規(guī)則在文檔里只寫幾...
    TOPro閱讀 5,566評論 7 3
  • 1.安裝 可以簡單地在頁面引入Vue.js作為獨立版本,Vue即被注冊為全局變量嗅义,可以在頁面使用了屏歹。 如果希望搭建...
    Awey閱讀 11,027評論 4 129
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒有地址/指針的概念1.2> 泛型1.3> 類型嚴(yán)謹(jǐn) 對...
    cosWriter閱讀 11,103評論 1 32
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)之碗,斷路器蝙眶,智...
    卡卡羅2017閱讀 134,662評論 18 139
  • 今天犯了眾所周知的錯誤, 面壁思過去了褪那, 大家隨意械馆!
    榮成二實中閱讀 950評論 12 2