最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue表單校驗validate和validateField的使用及區(qū)別詳解

 更新時間:2024年04月12日 08:42:17   作者:天邊月_  
validateField?和?validate?都可以用于表單驗證,但是它們的作用有所不同,下面這篇文章主要給大家介紹了關于Vue表單校驗validate和validateField的使用及區(qū)別的相關資料,需要的朋友可以參考下

在ant design框架開發(fā)的項目中,使用 FormModel 實現(xiàn)表單功能。在對表單進行校驗時,只需要通過 rules 屬性傳入約定的驗證規(guī)則,并將 FormItem 的 prop 屬性設置為需校驗的字段名即可。

更多配置詳見:https://1x.antdv.com/components/form-model-cn/

validate 會對整個表單進行校驗,只要綁定了 prop 屬性的表單項 ,都會被校驗。validateField 可以只對表單中的部分字段進行校驗。

代碼示例:

template 表單渲染

<a-form-model ref="Form" :model="form" :rules="rules">
	<a-form-model-item prop="mobile">
		<a-input v-model="form.mobile" size="large" placeholder="請輸入手機號" :maxLength="50" />
	</a-form-model-item>

	<a-form-model-item prop="verificationCode" class="other">
		<a-input v-model="form.verificationCode" size="large" placeholder="請輸入驗證碼" :maxLength="6" />
		<a-button size="large" :disabled="state.smsSendBtn || !form.mobile" @click="getCode">
			{{ state.smsSendBtn ? '已發(fā)送(' + state.time + ')' : '獲取驗證碼' }}
		</a-button>
	</a-form-model-item>

	<a-form-model-item prop="password">
		<a-input-password v-model="form.password" size="large" placeholder="請輸入密碼" :maxLength="50" />
	</a-form-model-item>

	<a-form-model-item prop="confirmPassword">
		<a-input-password v-model="form.confirmPassword" size="large" placeholder="請確認密碼" :maxLength="50" />
	</a-form-model-item>
</a-form-model>

表單參數(shù)校驗規(guī)則

rules: {
	mobile: [{ required: true, validator: this.mobileCheck.bind(this), trigger: ['blur'] }],
	verificationCode: [{ required: true, message: '請輸驗證碼', trigger: ['blur'] }],
	password: [{ required: true, validator: this.passwordCheck.bind(this), trigger: ['blur'] }],
	confirmPassword: [{ required: true, validator: this.confirmPasswordCheck.bind(this), trigger: ['blur'] }]
}

// 手機號校驗
mobileCheck(rule, value, callback) {
  const reg = /^[1][3,4,5,6,7,8,9][0-9]{9}$/
  if (!value) {
    callback('請輸入手機號碼')
    return
  }
  if (!reg.test(value.replace(/(^\s*)|(\s*$)/g, ""))) {
    callback('請輸入正確手機號碼')
    return
  }
  callback()
}

// 密碼校驗
passwordCheck(rule, value, callback) {
  const reg = /^(?![0-9]+$)(?![a-zA-Z]+$)[0-9A-Za-z]{8,20}$/
  if (!value) {
    callback('請輸入密碼')
    return
  }

  if (this.form.confirmPassword) {
    this.$refs.Form.validateField(['confirmPassword'])
  }

  if (!reg.test(value)) {
    callback('密碼必須為8-20位,由數(shù)字和大小寫字母組成')
    return
  }
  callback()
}

// 再次輸入密碼校驗
confirmPasswordCheck(rule, value, callback) {
  let { password } = this.form
  if (!value) {
    callback('請再次輸入密碼')
  }
  if (password) {
    if (password === value) {
      callback()
    } else {
      callback('兩次輸入密碼不一致,請重新輸入')
    }
  } else {
    callback('請先輸入密碼')
  }
},

參數(shù)校驗

使用 validate 對整個表單進行校驗,回調函數(shù)返回值valid 為true時代表校驗通過,false代表校驗不通過。

this.$refs.Form.validate(valid => {
  if (!valid) {
  	// 校驗不通過
  	return
  }
  
  // 校驗通過后邏輯
  ....
})

使用 validateField 對某個表單項進行校驗,當回調函數(shù)返回值valid 為空(‘’)時,表示校驗通過,不為空時表示校驗不通過。

this.$refs.Form.validateField(['mobile'], valid => {
  if (valid) {
  	// 校驗不通過
  	return
  }
  
  // 校驗通過后邏輯
  ....
})

使用 validateField 對多個表單項進行校驗

注意:表單項有幾個,回調函數(shù)就會執(zhí)行幾次,執(zhí)行順序為數(shù)組書寫順序,每次返回對應表單項的校驗結果。這樣會導致校驗通過后的邏輯執(zhí)行多次。有兩種解決方案:

1、新建數(shù)組arr,回調函數(shù)每次執(zhí)行時,將結果push到arr中。 在回調函數(shù)中對添加判斷邏輯,當數(shù)組長度與表單項相等,并且數(shù)組的每一項值都為空(‘’)時,代表校驗通過

// 存放每次校驗結果valid
let validateFieldList = []
// 校驗方法
this.$refs.Form.validateField(['mobile', 'captcha'], valid => {
  if (!valid) {
    // 校驗通過后,將valid追加入數(shù)組
    validateFieldList.push(valid)
  }

  // 校驗數(shù)組長度與表單項相等,并且數(shù)組的每一項值都為空(‘')
  if (validateFieldList.length == 2 && validateFieldList.every(item => item === '')) {
    //校驗通過的業(yè)務邏輯
  }

  // 校驗不通過邏輯
  return
})

2、使用Promise.all()方法,把每個表單項校驗封裝為promise函數(shù),所有校驗函數(shù)都返回成功后,在執(zhí)行后續(xù)代碼邏輯

// 需要校驗的表單項
let fileids = ['mobile', 'captcha']
// Promise.all 里面參數(shù)為一個數(shù)組,數(shù)組的每一項是一個返回promise 的函數(shù)調用
Promise.all(fileids.map(item => new Promise((resolve, reject) => {
  // 將每次校驗結果返回
  this.$refs.Form.validateField(item, err => resolve(err))
}))).then(res => {
  // then 的第一個參數(shù)是所有promise都成功的調用,返回結果是一個數(shù)組,數(shù)組的每一項為函數(shù)promise 的返回結果
  if (res.filter(item => item).length) return

  // 校驗成功后邏輯

})

附:element 中表單 validateField方法部分校驗遇到的坑

    Step1() {
      this.$refs.dataForm.validateField(this.field, (valid) => {
        if (!valid) {
           // 校驗通過進行的操作
        }
      })
    },    
 
    // 多個字段需要校驗時候 上面寫法一個字段校驗通過即可進入if,并沒有校驗全部字段,改下面寫法:
 
    Step1() {
      const validateList = []   // 定義空數(shù)組
      this.$refs.dataForm.validateField(this.field, (valid) => {
        // this.field  為要校驗的部分rules數(shù)組
        validateList.push(valid)
      })
      if (validateList.every((item) => item === '')) {
        // 判斷全部為空時 進行的操作 
      }
    },

總結 

到此這篇關于Vue表單校驗validate和validateField的使用及區(qū)別的文章就介紹到這了,更多相關表單校驗validate和validateField使用內容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!

相關文章

  • 基于Vue3實現(xiàn)百度地圖位置選擇器組件

    基于Vue3實現(xiàn)百度地圖位置選擇器組件

    在開發(fā)前端應用時,地圖選擇器是一個非常常見的需求,本文將一步步展示如何使用?Vue?3?和?Element?Plus?來實現(xiàn)一個百度地圖位置選擇器組件,有需要的可以參考一下
    2025-04-04
  • vue如何自定義事件傳參

    vue如何自定義事件傳參

    這篇文章主要介紹了vue如何自定義事件傳參,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • vue-cli中實現(xiàn)響應式布局的方法

    vue-cli中實現(xiàn)響應式布局的方法

    這篇文章主要介紹了vue-cli中實現(xiàn)響應式布局的方法,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • 在vue中使用v-bind:class的選項卡方法

    在vue中使用v-bind:class的選項卡方法

    今天小編就為大家分享一篇在vue中使用v-bind:class的選項卡方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • vue3純前端實現(xiàn)驗證碼代碼示例

    vue3純前端實現(xiàn)驗證碼代碼示例

    這篇文章主要介紹了驗證碼的用途和分類,展示了如何創(chuàng)建一個簡單的純前端字符驗證碼組件,并通過Canvas增加干擾線和干擾點的效果,通過Vue組件化開發(fā),文中通過代碼介紹的非常詳細,需要的朋友可以參考下
    2025-01-01
  • 最基礎的vue.js雙向綁定操作

    最基礎的vue.js雙向綁定操作

    這篇文章主要為大家詳細介紹了最基礎的vue.js雙向綁定操作,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • vue導出PDF實現(xiàn)方式(vue2,插件:pdfmake,表格)

    vue導出PDF實現(xiàn)方式(vue2,插件:pdfmake,表格)

    文章主要介紹了如何使用pdfmake插件生成PDF文件,并提供了一個示例代碼,用于將嵌套的數(shù)組轉換為一維數(shù)組,以便在PDF中生成表格,同時,文章還討論了如何設置表格的樣式,包括顏色、背景色和文字位置等
    2026-03-03
  • Electron + vue 打包桌面操作流程詳解

    Electron + vue 打包桌面操作流程詳解

    這篇文章主要介紹了Electron + vue 打包桌面操作流程,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-06-06
  • vue源碼之首次渲染過程詳解

    vue源碼之首次渲染過程詳解

    這篇文章主要為大家詳細介紹了vue源碼之首次渲染過程,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下,希望能夠給你帶來幫助
    2022-02-02
  • el-form錯誤提示信息手動添加和取消的示例代碼

    el-form錯誤提示信息手動添加和取消的示例代碼

    這篇文章主要介紹了el-form錯誤提示信息手動添加和取消,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08

最新評論

浙江省| 吉安县| 曲水县| 辽阳市| 丹阳市| 东明县| 永安市| 翁牛特旗| 凤庆县| 荥经县| 莒南县| 兰西县| 靖边县| 建宁县| 太保市| 漳浦县| 河北省| 镇平县| 东宁县| 进贤县| 陆丰市| 乌鲁木齐县| 襄樊市| 廊坊市| 广平县| 甘南县| 万荣县| 翁牛特旗| 汤阴县| 德江县| 荔浦县| 津市市| 湟中县| 彭水| 寿阳县| 阳高县| 大埔区| 封开县| 五常市| 崇文区| 柯坪县|