Vue.js怎么進行formvalidation

小編給大家分享一下Vue.js怎么進行form validation,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!

10年積累的成都網(wǎng)站設計、成都網(wǎng)站建設經(jīng)驗,可以快速應對客戶對網(wǎng)站的新想法和需求。提供各種問題對應的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡服務。我雖然不認識你,你也不認識我。但先網(wǎng)站設計后付款的網(wǎng)站建設流程,更有海寧免費網(wǎng)站建設讓你可以放心的選擇與我們合作。

Vue.js如何優(yōu)雅的進行form validation?

1. 所有validation rules是被集中管理,而不是每個文件自己一種,導致驗證規(guī)則冗余。
2. 能夠進行remote validate。
3. 不用JQuery。

現(xiàn)有的插件vuejs/vue-validator · GitHub只能實現(xiàn)普通驗證,但如何解決1,因為vue-validator沒有把校驗規(guī)則給抽象出來,沒辦法,現(xiàn)在只能自己代碼上再抽出一層rules來管理。remote validation只能手寫借助Jquery ajax來驗證。

網(wǎng)友1、曾廣營

這個現(xiàn)在我可以回答了。

我覺得 vue-validator 太冗余了。所以自己寫了個項目用的插件 va.js,它實現(xiàn)了

集中式的管理 校驗規(guī)則 和 報錯模板。

報錯時機可選

校驗正確后的數(shù)據(jù),已經(jīng)打包成對象,可以直接用

允許各個頁面對規(guī)則進行覆蓋,對報錯信息進行自定義修改,以及允許ajax獲取數(shù)據(jù)后,再對規(guī)則進行補充

按順序來校驗報錯

我寫了一篇博文來記載

va.js的寫作歷程。va.js——Vue 表單驗證插件的寫作過程

我個人觀點。表單驗證的是一種高度定制化的東東。所以網(wǎng)上用的插件,都會有不盡人意的感覺,因為要么冗余,要么不夠。因此,我分享了思路和源碼。真的想寫的話,借鑒思路自己寫吧。

補充:

1.自定義的js函數(shù)規(guī)則,可以自己再加入。 有個存儲校驗函數(shù)的對象,可以擴展。
2.對ajax的處理僅僅是暴露通過校驗的數(shù)據(jù)的對象。即假如在ajax前不需驗證的話,這份暴露出來的數(shù)據(jù)是可以提交的;假如需要驗證,可以使用這個暴露出來的數(shù)據(jù),對單個或多個字段加上額外的校驗。 

網(wǎng)友2、冉聰杰

推薦:vee-validate https://github.com/logaretm/vee-validate/

網(wǎng)友3、李文富

自己簡單寫一個,支持異步,支持任意 Vue Component,不限定于 Form Element。

來自:https://github.com/crossjs/plato/blob/master/src/modules/validator/index.js

看 return 部分即可:

import Vue from 'vue'
import * as rules from './rules'
import promisify from 'util/promisify'

export default (context, options = {}) => {
 // options = { scope: 'validator', prefix: '/', ...options }

 // 只注冊回調,不注冊數(shù)據(jù)
 return () => {
 Vue.mixin({
  beforeCreate () {
  const options = this.$options
  const { validator } = options

  if (validator) {
   // 在入口處定義 $validation
   Vue.util.defineReactive(this, '$validation', {
   fields: [],
   errors: []
   })
   this.$validator = this
   nextTick(this, validator.auto)
  } else {
   const { parent } = options
   if (parent && parent.$validation) {
   this.$validation = parent.$validation
   this.$validator = parent.$validator
   nextTick(this, parent.$validator.$options.validator.auto)
   }
  }
  }
 })

 /**
  * $validate
  *
  * validate vm recursively.
  *
  * @return {Promise}
  */
 Vue.prototype.$validate = function (fromEntry) {
  const { validate, $validation = {}, $validator } = this

  // 如果此處為校驗入口
  if ($validator === this && !fromEntry) {
  // 頂級往下校驗所有子組件
  return Promise.all($validation.fields
   .map(field => field.$validate(true)))
   .then(() => $validation)
   .catch(() => Promise.reject($validation))
  } else {
  if (!validate) {
   return Promise.resolve($validation)
  }
  return Promise.all(Object.keys(validate).map(key => {
   return new Promise((resolve, reject) => {
   const { validator = rules[key], rule, message } = validate[key]
   if (validator) {
    // reject if falsy
    promisify(validator(this.value, rule), true)
    .then(resolve)
    .catch(() => {
     reject({
     field: this.field || this,
     rule,
     message
     })
    })
   } else {
    __PROD__ || console.warn(`'${key}' is NOT a valid validator`)
    resolve()
   }
   })
  })).then(() => {
   updateErrors($validation.errors, this)
   return $validation
  }).catch(error => {
   updateErrors($validation.errors, this, error)
   return Promise.reject($validation)
  })
  }
 }

 function updateErrors (errors, vm, replacement) {
  const field = vm.field || vm
  const found = errors.some((error, index) => {
  if (error.field === field) {
   if (replacement) {
   errors.splice(index, 1, replacement)
   } else {
   errors.splice(index, 1)
   }
   return true
  }
  return false
  })

  if (!found && replacement) {
  errors.push(replacement)
  }

  return errors
 }

 function nextTick (vm, auto) {
  vm.$nextTick(() => {
  // 定義了校驗規(guī)則
  if (vm.validate) {
   vm.$validation.fields.push(vm)
   // 加載完成自動檢查
   if (auto) {
   vm.$validate()
   }
  }
  })
 }
 }
}

還有一個網(wǎng)友推薦的:試試這個自帶氣泡提示的vue校驗插件,配合vue-hook-form能夠輕松實現(xiàn)表單校驗

以上是“Vue.js怎么進行form validation”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯(lián)行業(yè)資訊頻道!

新聞標題:Vue.js怎么進行formvalidation
當前地址:http://bm7419.com/article2/jddhic.html

成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供營銷型網(wǎng)站建設、網(wǎng)站設計、域名注冊、軟件開發(fā)服務器托管、外貿網(wǎng)站建設

廣告

聲明:本網(wǎng)站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經(jīng)允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯(lián)

網(wǎng)站優(yōu)化排名