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

Vue自定義表單內(nèi)容檢查rules實例

 更新時間:2020年10月30日 08:37:57   作者:乘風御浪云帆之上  
這篇文章主要介紹了Vue自定義表單內(nèi)容檢查rules實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧

先看個例子

組件

<el-form-item label="手機號:" prop="phone_number">
 <el-input v-model="formPerson.phone_number"></el-input>
</el-form-item>

script中

export default {
 data() {
  var validateMobilePhone = (rule, value, callback) => {
   if (value === '') {
    callback(new Error('負責人手機號不可為空'));
   } else {
    if (value !== '') {
    var reg = /^1[3456789]\d{9}$/;
    if (!reg.test(value)) {
     callback(new Error('請輸入有效的手機號碼'));
    } else {
     callback();
    }
    }
   }
  };
 
  return{
   formPerson: {
    phone_number: '',
   },
   rules: {
    phone_number: [
    {validator: validateMobilePhone, trigger: 'blur'}
    ]
   },
  }
 }
}

遇到的坑

在組件中【開始寫的時候prop自定的名字】

<el-form-item label="手機號:" prop="phone">
 <el-input v-model="formPerson.phone_number"></el-input>
</el-form-item>

rules中

rules: {
 phone: [
 {validator: validateMobilePhone, trigger: 'blur'}
 ]
}

碰到的坑

當輸入正確的手機號時,顯示為錯誤,發(fā)現(xiàn)value并沒有傳過來,為undefined

解決:

prop寫成和數(shù)據(jù)中的參數(shù)的名稱一樣,即phone_number

補充知識:用vue自定義指令v-validated寫一個全局表單驗證

由于不想在單vue文件里用blur等等設置表單驗證并顯示驗證失敗的信息,因此思考并封裝了一個全局自定義指令。

獻上我的代碼。

html

  <div class="form-section">
    <p>First Name</p>
    <input type="text" v-model='form.username' v-validated:username="['username',form.username]" placeholder="" >
    <div class="error"></div>
   </div>
    <div class="form-section">
    <p>Last Name</p>
    <input type="text" v-model='form.secondname' placeholder="">
    <div class="error"></div>
   </div>
   <div class="form-section">
    <p>Email</p>
    <input type="email" v-model='form.email' v-validated:email="['email',form.email]" placeholder="">
    <div class="error"></div>
   </div>
   <div class="form-section">
    <p>Password</p>
    <input type="password" v-model='form.password' v-validated:password="['password',form.password]" autocomplete placeholder="">
    <div class="error"></div>
   </div>

在input上掛載v-validated指令,向指令傳輸 ‘username'的校驗類型,和form.username的校驗數(shù)據(jù)。

現(xiàn)在封裝v-validated指令

validated.js

import Vue from 'vue'
/**
 * 校驗失敗
*/
function testError (el) {
 el.style.borderColor = '#d20000'
 el.style.backgroundColor = '#fff8f8'
}
/**
 * 校驗成功
*/
function testCorrect (el) {
 el.style.borderColor = '#a3a3a3'
 el.nextElementSibling.innerHTML = ''
 el.style.backgroundColor = 'transparent'
}
/**
 * 校驗用戶名
 * */
function testUserName (username, el) {
 if (/^\w{3,30}$/g.test(username)) {
  testCorrect(el)
  return true
 } else {
  testError(el)
  el.nextElementSibling.innerHTML = 'Username must be 3 to 30 characters'
  return false
 }
}
/**
 * 校驗郵箱
 * */
function testEmail (email, el) {
 if (/^[\w-]+@[\w-]+(\.[\w-]+)+$/g.test(email)) {
  testCorrect(el)
  return true
 } else {
  testError(el)
  el.nextElementSibling.innerHTML = 'Mailbox format is not correct!'
  return false
 }
}
/**
 * 校驗密碼
 * */
function testPwd (pwd, el) {
 if (/^\w{6,30}$/g.test(pwd)) {
  testCorrect(el)
  return true
 } else {
  testError(el)
  el.nextElementSibling.innerHTML = 'Password must be 6 to 30 characters'
  return false
 }
}

Vue.directive('validated', {
 inserted (el, binding) { // 綁定元素插入父節(jié)點時調(diào)用
  el.addEventListener('blur', () => {
   switch (binding.value[0]) {
    case 'username' : testUserName(binding.def[binding.rawName], el); break
    case 'email' : testEmail(binding.def[binding.rawName], el); break
    case 'password' : testPwd(binding.def[binding.rawName], el); break
   }
  })
 },
 update: function (el, binding, vNode) { // 更新元素信息時調(diào)用
  binding.def[binding.rawName] = binding.value[1]
 }
})
export default {
 init () {
  console.log('*** validated installed ***')
 }
}


由于沒有找到官方鉤子之間傳遞數(shù)據(jù)的方法,所以自己看著用binding.def下定義updated來作為傳遞數(shù)據(jù),

inserted是節(jié)點插入時就調(diào)用一次。在這里做元素blur的監(jiān)聽,動態(tài)數(shù)據(jù)由update刷新。

修正:我只定義一個updated會出現(xiàn)多個更新數(shù)據(jù)共用一個參數(shù)名,導致數(shù)據(jù)錯亂。

所以我用binding.rawName做指針,放入binding.def下,實現(xiàn)一個頁面多個數(shù)據(jù)多個處理,因為update鉤子是頁面上的任意改動都會觸發(fā),而不是當前掛載指令的dom對象變化才會跟著變化。

最后將這個文件放入main.js

main.js

import validated from '@/dorajs/validated.js'

Vue.use(validated)

效果如下

完美解決!

以上這篇Vue自定義表單內(nèi)容檢查rules實例就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue $router和$route的區(qū)別詳解

    vue $router和$route的區(qū)別詳解

    這篇文章主要介紹了vue $router和$route的區(qū)別詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2020-12-12
  • vue2.0 常用的 UI 庫實例講解

    vue2.0 常用的 UI 庫實例講解

    這篇文章主要介紹了vue2.0 常用的 UI 庫實例講解,非常不錯,具有參考借鑒價值,需要的朋友可以參考下
    2017-12-12
  • 前端Vue3實現(xiàn)圖片標點兩種方式總結(jié)

    前端Vue3實現(xiàn)圖片標點兩種方式總結(jié)

    這篇文章主要介紹了如何使用Vue3和Ant?Design?Vue4.x實現(xiàn)圖像標點和質(zhì)量檢測功能,文章詳細描述了兩種方式,每種方式都包括前端顯示代碼、配置基本數(shù)據(jù)、繪制圓點和序號以及處理圖片點擊的步驟,需要的朋友可以參考下
    2024-11-11
  • 1分鐘Vue實現(xiàn)右鍵菜單

    1分鐘Vue實現(xiàn)右鍵菜單

    今天給大家分享的是,如何在最短的時候內(nèi)實現(xiàn)右鍵菜單。高效實現(xiàn)需求,避免重復造輪子。感興趣的可以了解一下
    2021-10-10
  • vue?實現(xiàn)列表跳轉(zhuǎn)至詳情且能添加至購物車功能

    vue?實現(xiàn)列表跳轉(zhuǎn)至詳情且能添加至購物車功能

    列表頁面顯示數(shù)據(jù),點擊跳轉(zhuǎn)到對應的詳情頁,詳情頁可以添加并跳轉(zhuǎn)到購物車,購物車具有常見功能,這篇文章主要介紹了vue?實現(xiàn)列表跳轉(zhuǎn)至詳情且能添加至購物車,需要的朋友可以參考下
    2022-10-10
  • vue 插值 v-once,v-text, v-html詳解

    vue 插值 v-once,v-text, v-html詳解

    這篇文章主要介紹了vue 插值 v-once,v-text, v-html詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-01-01
  • vue+echarts實現(xiàn)中國地圖流動效果(步驟詳解)

    vue+echarts實現(xiàn)中國地圖流動效果(步驟詳解)

    這篇文章主要介紹了vue+echarts實現(xiàn)中國地圖流動效果(步驟詳解),本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-01-01
  • vue3+vite+vant4手機端項目實戰(zhàn)記錄

    vue3+vite+vant4手機端項目實戰(zhàn)記錄

    這篇文章主要給大家介紹了關(guān)于vue3+vite+vant4手機端項目實戰(zhàn)的相關(guān)資料,Vue3是一種前端開發(fā)框架,它的目標是提供更好的性能和開發(fā)體驗,需要的朋友可以參考下
    2023-08-08
  • vue+elementui實現(xiàn)表格多級表頭效果

    vue+elementui實現(xiàn)表格多級表頭效果

    這篇文章主要為大家詳細介紹了vue?+?elementui實現(xiàn)表格多級表頭,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • vue中如何動態(tài)拼接this后面的變量

    vue中如何動態(tài)拼接this后面的變量

    這篇文章主要介紹了vue中如何動態(tài)拼接this后面的變量問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07

最新評論

宣汉县| 拉孜县| 兴山县| 沙洋县| 新乡县| 天峨县| 营山县| 申扎县| 义乌市| 阳城县| 旬邑县| 正宁县| 杭州市| 太白县| 固原市| 韩城市| 洪泽县| 巴林左旗| 岑巩县| 富川| 乌什县| 清涧县| 平陆县| 湘潭县| 美姑县| 山丹县| 宣武区| 尉氏县| 新蔡县| 固镇县| 堆龙德庆县| 六安市| 安乡县| 永春县| 鹤庆县| 灵山县| 丹江口市| 肇源县| 台南县| 沾化县| 庄浪县|