亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 編程 > JavaScript > 正文

在Vant的基礎上實現添加表單驗證框架的方法示例

2019-11-19 12:24:06
字體:
來源:轉載
供稿:網友

Vant 一套基于Vue的移動端UI框架,有贊出品。

因為UI設計的夠漂亮,源碼結構也比較清晰,插件定位也比較明確,重要是實戰過程中的使用體驗不錯。在最近的項目當中就使用 Vant 作為移動端的基礎UI框架,但在實踐過程中發現該框架和其他框架有不一樣的地方。例如它不內置表單驗證,接下來,我把自己實現驗證框架的思路分享出來。

分析需求

我們找的插件主要能解決以下問題

  • 支持中文
  • 適應UI框架
  • 分組驗證
  • 動態驗證(數據動態,規則動態)

去網絡上搜索了一些框架,推薦兩款(在官方也有推https://cn.vuejs.org/v2/cookbook/form-validation.html

我的項目里使用的是 vee-validate

解決問題

安裝及支持中文

npm install vee-validate --save
import VeeValidate, { Validator } from 'vee-validate'import zh_CN from 'vee-validate/dist/locale/zh_CN';Validator.localize('zh_CN', zh_CN)Vue.use(VeeValidate)

中文問題可以解決,但是遇到個很惡心的問題,這樣的錯誤提示會變成 title不能為空 這樣的提示,實際展示效果是不好的。
所以這個需要重構下,自己來實現錯誤提示的內容

const formatFileSize = function (size) { let units = ['Byte', 'KB', 'MB', 'GB', 'TB', 'PB', 'EB', 'ZB', 'YB']; let threshold = 1024; size = Number(size) * threshold; let i = size === 0 ? 0 : Math.floor(Math.log(size) / Math.log(threshold)); return (((size / Math.pow(threshold, i)).toFixed(2) * 1) + " " + (units[i]));}Validator.localize('zh_CN', { name: 'zh_CN', attributes: {} messages: {  _default: () => `${fieldName}無效`,  after: (field, [target]) => `${fieldName}必須在${target}之后`,  alpha_dash: () => `${fieldName}能夠包含字母數字字符、破折號和下劃線`,  alpha_num: () => `${fieldName}只能包含字母數字字符`,  alpha_spaces: () => `${fieldName}只能包含字母字符和空格`,  alpha: () => `${fieldName}只能包含字母字符`,  before: (field, [target]) => `${fieldName}必須在${target}之前`,  between: (field, [min, max]) => `${fieldName}必須在${min}與${max}之間`,  confirmed: (field, [confirmedField]) => `${fieldName}不能和${confirmedField}匹配`,  credit_card: () => `${fieldName}格式錯誤`,  date_between: (field, [min, max]) => `${fieldName}必須在${min}和${max}之間`,  date_format: (field, [format]) => `${fieldName}必須符合${format}格式`,  decimal: (field, [decimals = '*'] = []) => `${fieldName}必須是數字,且能夠保留${decimals === '*' ? '' : decimals}位小數`,  digits: (field, [length]) => `${fieldName}必須是數字,且精確到${length}位數`,  dimensions: (field, [width, height]) => `${fieldName}必須在${width}像素與${height}像素之間`,  email: () => `${fieldName}不是一個有效的郵箱`,  ext: () => `${fieldName}不是一個有效的文件`,  image: () => `${fieldName}不是一張有效的圖片`,  included: () => `${fieldName}不是一個有效值`,  integer: () => `${fieldName}必須是整數`,  ip: () => `${fieldName}不是一個有效的地址`,  length: (field, [length, max]) => {   if (max) {    return `${fieldName}長度必須在${length}到${max}之間`   }   return `${fieldName}長度必須為${length}`  },  max: (field, [length]) => `${fieldName}不能超過${length}個字符`,  max_value: (field, [max]) => `${fieldName}必須小于或等于${max}`,  mimes: () => `${fieldName}不是一個有效的文件類型`,  min: (field, [length]) => `${fieldName}必須至少有${length}個字符`,  min_value: (field, [min]) => `${fieldName}必須大于或等于${min}`,  excluded: () => `${fieldName}不是一個有效值`,  numeric: () => `${fieldName}只能包含數字字符`,  regex: () => `${fieldName}格式無效`,  required: () => `${fieldName}不能為空`,  size: (field, [size]) => `${fieldName}必須小于${formatFileSize(size)}`,  url: () => `${fieldName}不是一個有效的url` }})Vue.use(VeeValidate)

適應UI框架

雖然Vant沒有內置驗證框架,但提供了錯誤的樣式。

<van-field :error="..." :error-message="..."/>

用 vee-validate 可以這樣解決

<van-field ... name="title" v-validate="'required|max:20'" :error="errors.has('title')" :error-message="errors.first('title')"/>
this.$validator.validateAll().then((result) => { if(result){  // ... }})

分組驗證

<van-field name="title" data-vv-scope="group-1" v-validate="'required|max:20'" :error="errors.has('group-1.title')" :error-message="errors.first('group-1.title')"/>
this.$validator.validateAll('group-1').then((result) => { if(result){  // ... }})

如此,基于 Vant 的驗證框架問題就得以解決了,可以愉快的玩耍表單驗證了。

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持武林網。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
欧美激情一级二级| 日韩电视剧免费观看网站| 国产精品成人v| 自拍偷拍亚洲精品| 国产亚洲美女久久| 北条麻妃一区二区在线观看| 亚洲电影免费观看高清完整版在线观看| 最近2019中文字幕一页二页| 欧美孕妇孕交黑巨大网站| 国产精品v片在线观看不卡| 一本色道久久综合亚洲精品小说| 亚洲第一精品电影| 成人欧美在线观看| 国产精品精品久久久久久| 国产精品久久91| 亚洲第一精品福利| 欧美成人午夜免费视在线看片| 亚洲国产精品99久久| 中文字幕在线国产精品| 欧美一级bbbbb性bbbb喷潮片| 国产亚洲精品久久| 羞羞色国产精品| 免费不卡在线观看av| 97人洗澡人人免费公开视频碰碰碰| 欧美午夜精品久久久久久人妖| 国产精品一区专区欧美日韩| 国产精品激情av电影在线观看| 日韩中文字幕视频在线观看| 国产精品丝袜久久久久久不卡| 国产一区二区三区欧美| 日本老师69xxx| 国产精品免费在线免费| 日日噜噜噜夜夜爽亚洲精品| 欧美大尺度电影在线观看| 国产精品视频精品视频| 亚洲国产精品久久久久秋霞蜜臀| 亚洲图片欧洲图片av| 日韩性xxxx爱| 欧美一区二区三区四区在线| 最近免费中文字幕视频2019| 亚洲夜晚福利在线观看| 色妞在线综合亚洲欧美| 亚洲成色777777在线观看影院| 久久天天躁狠狠躁夜夜躁2014| 91成人福利在线| 91av视频在线观看| 日本中文字幕不卡免费| 亚洲精品一区中文字幕乱码| 日韩精品视频中文在线观看| 欧美激情奇米色| 日韩电影中文字幕av| 亚洲最大成人网色| 91精品国产亚洲| 日韩av电影手机在线| 一区二区三区精品99久久| 91在线观看免费网站| 成人国产在线激情| 欧美一性一乱一交一视频| 日韩亚洲欧美中文高清在线| 国产精品久久在线观看| 日韩精品视频三区| 久久精品视频导航| 精品视频在线播放| 国产精品2018| 91精品国产色综合| 美日韩精品免费观看视频| 久久久久国色av免费观看性色| 久久精品亚洲热| 欧美裸体xxxx极品少妇软件| 国产中文字幕91| 亚洲国产精品成人av| 国产精品偷伦视频免费观看国产| 国产精品免费久久久久久| 午夜精品久久久久久久99热浪潮| 亚洲曰本av电影| 精品动漫一区二区三区| 色99之美女主播在线视频| 日韩av在线免费观看一区| 欧美激情一级二级| 欧美激情2020午夜免费观看| 57pao成人永久免费视频| 国产精品高清免费在线观看| 成人在线精品视频| 国产精品九九九| 亚洲人永久免费| 成人免费直播live| 久久激情五月丁香伊人| 欧美激情一区二区三区高清视频| 成人春色激情网| 国语自产精品视频在线看一大j8| 日韩综合视频在线观看| 国产精品www| 国产精品一区av| 国产成人精品综合久久久| 一区二区三区美女xx视频| 亚洲色图25p| 亚洲视频在线观看免费| 久久久av亚洲男天堂| 久久精品精品电影网| 国产精品第一视频| 久久成人国产精品| 成人信息集中地欧美| 国内自拍欧美激情| 精品一区二区电影| 亚洲最新av网址| 久久久97精品| 中文字幕欧美专区| 欧美裸体视频网站| 97精品视频在线观看| 伊人伊成久久人综合网站| 欧美成人在线免费| 亚洲国产精品视频在线观看| 欧美性极品xxxx娇小| 亚洲第一区第二区| 国产精品国产三级国产aⅴ浪潮| 亚洲国产中文字幕在线观看| 欧美噜噜久久久xxx| 中文字幕一区二区精品| 懂色av一区二区三区| 亚洲欧美国产日韩天堂区| 午夜免费久久久久| 久久精品亚洲热| 日韩免费看的电影电视剧大全| 亚洲精品乱码久久久久久金桔影视| 日本成人在线视频网址| 亚洲国产欧美一区二区三区同亚洲| 欧美性猛交xxxxx免费看| 777午夜精品福利在线观看| 国产精品青青在线观看爽香蕉| 亚洲最大激情中文字幕| 77777少妇光屁股久久一区| 成人网址在线观看| 国产精品高潮呻吟久久av无限| 久久亚洲综合国产精品99麻豆精品福利| 国产精品久久久久久一区二区| 久久中文字幕在线| 在线视频国产日韩| 亚洲人成毛片在线播放| 亚洲理论在线a中文字幕| 国产精品视频在线观看| 欧美日本高清一区| 亚洲аv电影天堂网| 亚洲bt欧美bt日本bt| 国产欧美在线播放| 97视频在线播放| 日韩精品中文字幕久久臀| 欧美极品欧美精品欧美视频| 欧美日韩国内自拍| 伊人伊成久久人综合网小说| 国产精品成av人在线视午夜片| 黄网动漫久久久| 亚洲护士老师的毛茸茸最新章节| 国产精品一区二区久久国产| 一本色道久久88亚洲综合88| 97精品欧美一区二区三区| 精品自在线视频| 国产精品免费小视频| 国产日韩精品在线播放| 色综合天天综合网国产成人网| 亚洲精品理论电影| 青青在线视频一区二区三区| 欧美性猛交xxxx富婆弯腰| 欧洲中文字幕国产精品| 国产69精品99久久久久久宅男|