博客 / 詳情

返回

vue 如何實現表單校驗

安裝並使用

首先,在你的vue項目中進行安裝:

npm install --save vue-input-check

接着根據不同的vue版本註冊:

vue2.js

import Vue from 'vue';
Vue.use(inputCheck);

vue3.js+

import { createApp } from 'vue';

let app = createApp(App);

app.use(inputCheck, {
    instance: app
});

然後,我們就可以在表單中使用了:

<form autocomplete="off" novalidate>
    <input v-model='key' name='輸入框名稱' v-input-check='[key,"validate-express"]'/>
    <!-- 可以有任意多的輸入框 -->
</form>

如你所見,上述的v-input-check就是我們對每個輸入框定義規則的地方,值是一個數組,第一個值就是輸入框的v-model,第二個值是一個字符串,語法如下:

validate-express="val1:param1:param2|val2|valu3:param1"

不同的規則使用|分割,需要傳遞參數的規則的參數通過:分割。我們來看幾個例子:

    v-input-check='[key,"required|maxLength:10|regexp:^\\d{1,5}$"]'
    v-input-check='[key,"required"]'

目前可選的內置規則如下:

    required:boolean:表示必輸,有一個可選參數,表示是否必輸,默認true
    maxLength:num:最大長度
    minLength:num:最小長度
    regexp:str:正則表達式

獲取校驗結果

頁面的規則定義好了以後,你有兩中方式獲取校驗的結果。

1.JS的方式

直接使用下列方法啓動檢查即可:

this.$validateCheck(formnode, callback, errorback);

此對象包含三個參數:

    formnode:需要校驗的表單結點,必輸
    callback:表單合法回調,可選
    errorback:表單非法回調,可選

此外,錯誤回調有一個形參,數據格式為:

{
    "$el":錯誤的輸入框結點
    "$error":當前輸入框的第一個錯誤提示信息
}

2.HTML的方式

提供這種方式的目的是為了可以在頁面實時反饋當前表單的輸入情況。

首先,在表單上,你可以通過判斷class包含v-valid或者v-invalid來判斷表單是否合法。

同樣的,添加指令v-input-check的地方同樣可以這樣判斷該處是否合法,而對於更具體的錯誤細節,比如必輸非法,class就會像這樣v-invalid-required v-invalid。
自定義校驗規則

自定義校驗規則

在大部分情況下,我們還可能需要添加新的校驗規則,畢竟默認的往往不足以滿足所有業務情況:

Vue.use(inputCheck, {

    // 自定義校驗規則
    validate: [{

        // 規則的名稱
        name: "XXX",

        // 校驗方法,返回true表示合法,false表示非法
        // 需要注意的是,這個函數除了el和val一定存在外,餘下的參數是使用的時候通過```:```分割傳遞的,可以有任意多個
        // 比如:``` required:true|phone:parm1:param2 ```
        test: function (el, val, ...) {
            return true|false;
        },

        // 非法提示信息,應該返回一個字符串
        message: function (el, name) {
            return "XXX";
        }
    },
    // 校驗規則可以有多條
    ......
    ]

});
user avatar zzd41 頭像 lanlanjintianhenhappy 頭像 peter-wilson 頭像 jidongdehai_co4lxh 頭像 jianqiangdepaobuxie 頭像 musicfe 頭像 qianduanlangzi_5881b7a7d77f0 頭像 joytime 頭像 william_wang_5f4c69a02c77b 頭像 amsterdam_5caf807441f49 頭像 harryfyodor 頭像 alogy 頭像
20 位用戶收藏了這個故事!

發佈 評論

Some HTML is okay.