iView爬坑記——表單驗證

版本:iView 2.7.4


自從項目用了iView之后忙芒,感覺做新需求的一半時間都在瘋狂踩坑根灯,所以寫個文檔記錄一下踩過的坑毕源。
此篇為iView表單驗證的爬坑記錄岸更。


更新:2019.3.10

1、value為undefined

在項目開發(fā)中,表單驗證時一直出現(xiàn)各種“不能為空”法焰、驗證不通過等情況秧荆,但是自身輸入和驗證方法沒有問題時,一般來說是輸入框的value為undefined的埃仪。
比較簡單的檢測方法就是寫一個驗證方法乙濒,打印或debugger查看此時的輸入值的取值(value)是否為輸入值,如果不是或為undefined贵试,那么就是取值錯誤,而非驗證方法錯誤凯正。
參考文檔例子:

const validatePass = (rule, value, callback) => {
    // 此時便能打印value值查看
};

解決方法

  1. 表單的ref="..."是否有添加毙玻;
  2. 表單的:model="..."是否有添加;
  3. 表單的:rules="..."是否有添加廊散;
  4. 表單的ref="...":model="..." 是否一致桑滩;
  5. 表單的FormItem的屬性prop="..."是否與輸入框(例如input)的v-moel="..."模版名稱一致;

2允睹、驗證類型

雖然我們在官網(wǎng)上會看到類似例子:

{ type: 'email', message: 'Incorrect email format', trigger: 'blur' }

但是建議放棄利用這個方法驗證輸入值的數(shù)據(jù)類型运准。
例如,該驗證方法的type類型有number缭受,但它默認獲取輸入值為string胁澳,所以會導致type不符(并非因為輸入的值不是數(shù)字)。

現(xiàn)在用的版本中還未修復此問題米者,如果已修復則可忽視該建議

3.日期非空

在平時項目中韭畸,會遇到需要選擇日期,但提交時日期不能為空這一需求蔓搞,那么應該如何驗證胰丁?
根據(jù)上面第一條打印value值,發(fā)現(xiàn)如果日期沒有選擇喂分,日期選擇器上的value值為["",""](使用的是<DatePicker type="date"></DatePicker>)锦庸。

解決方法:
這時候就不能根據(jù)長度驗證,所以必須循環(huán)/遍歷判斷value的數(shù)組每一項是否為空蒲祈。

4.時間選擇器值類型

之前表單驗證時遇到一個問題甘萧,在不同電腦上,TimePicker的最終數(shù)據(jù)值類型不同(不知道是否因為一個是Mac一個是Windows10)梆掸。
搜索了一下度娘幔嗦,發(fā)現(xiàn)也有其他人有類似問題。
問題為:
Mac上TimePicker最終數(shù)據(jù)類型為數(shù)組沥潭,而Win10上TimePicker最終數(shù)據(jù)類型為本地時區(qū)時間(例如:2017-11-16T05:23:20.000Z)邀泉。

解決方法:
表單提交前記得判斷TimePicker最終數(shù)據(jù)的類型,避免傳值給后端時報錯。

5.屬性trigger不添加

表單驗證規(guī)則中汇恤,trigger屬性填寫的是在什么情況下觸發(fā)該驗證庞钢,例如blur或者change
但是我們會有某些需求因谎,需要讓該輸入框在提交的時候才驗證基括,并不需要實時驗證,此時就會有把trigger刪掉的做法财岔。
該做法的結果是风皿,一進入有表單的頁面時,表單就會進行一次校驗匠璧。

6.校驗錯誤信息定制

有時候在項目中會有幾個表單的輸入框使用同一個校驗方法(比如校驗數(shù)字桐款、身份證之類的),需要根據(jù)頁面情況顯示特定的錯誤信息提示夷恍,但是這個校驗方法又是單獨一個JS文件魔眨。

那么可以在校驗規(guī)則上添加message,寫上特定的錯誤信息提示酿雪,這樣頁面上顯示的就是特定的錯誤信息提示遏暴。

7.表單驗證成功沒有進方法

this.$refs[formName].validate((valid) => {
    if (valid) { // 步驟1
        alert('submit!');
    } else {
        console.log('error submit!!');
        return false;
    }
 });

在規(guī)則中有未填或填錯,會有正常提示指黎,但是如果全部填寫朋凉,步驟1卻沒辦法判斷成功并進入方法,會直接報錯醋安,有可能是寫自定義規(guī)則的時候侥啤,沒有寫callback()

最后編輯于
?著作權歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末茬故,一起剝皮案震驚了整個濱河市盖灸,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌磺芭,老刑警劉巖赁炎,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異钾腺,居然都是意外死亡徙垫,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門放棒,熙熙樓的掌柜王于貴愁眉苦臉地迎上來姻报,“玉大人,你說我怎么就攤上這事间螟∥庑” “怎么了损肛?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長荣瑟。 經(jīng)常有香客問我治拿,道長,這世上最難降的妖魔是什么笆焰? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任劫谅,我火速辦了婚禮,結果婚禮上嚷掠,老公的妹妹穿的比我還像新娘捏检。我一直安慰自己,他們只是感情好不皆,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布贯城。 她就那樣靜靜地躺著,像睡著了一般粟焊。 火紅的嫁衣襯著肌膚如雪冤狡。 梳的紋絲不亂的頭發(fā)上孙蒙,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天项棠,我揣著相機與錄音,去河邊找鬼挎峦。 笑死香追,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的坦胶。 我是一名探鬼主播透典,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼顿苇!你這毒婦竟也來了峭咒?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤纪岁,失蹤者是張志新(化名)和其女友劉穎凑队,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體幔翰,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡漩氨,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了遗增。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片叫惊。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖做修,靈堂內(nèi)的尸體忽然破棺而出霍狰,到底是詐尸還是另有隱情抡草,我是刑警寧澤,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布蚓耽,位于F島的核電站渠牲,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏步悠。R本人自食惡果不足惜签杈,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望鼎兽。 院中可真熱鬧答姥,春花似錦、人聲如沸谚咬。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽择卦。三九已至敲长,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間秉继,已是汗流浹背祈噪。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留尚辑,地道東北人辑鲤。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓,卻偏偏與公主長得像杠茬,于是被迫代替她去往敵國和親月褥。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

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