欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Vue+Element實現(xiàn)動態(tài)生成新表單并添加驗證功能

 更新時間:2019年05月23日 16:57:26   作者:酒香飄在巷子里  
這篇文章主要介紹了Vue+Element實現(xiàn)動態(tài)生成新表單并添加驗證功能,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下

首先有一個這樣的需求,表單中默認(rèn)有一個聯(lián)系人信息,用戶可以再添加新的聯(lián)系人信息

點擊添加更多聯(lián)系人之后

官方文檔中有寫用v-for來實現(xiàn)新增表單,但是那是單表單的新增,現(xiàn)在多表單的新增,可以考慮的實現(xiàn)方法是先寫死一個必須的表單,需要新增的兩個表單放在一個div里,在div中使用v-for生成,達(dá)到同時新增的效果

代碼如下

//必填一個聯(lián)系人的表單
<el-form-item class="rules" label="通知對象:" prop="notifyobject">
      <el-input v-model="ruleForm.notifyobject" placeholder="請輸入聯(lián)系人名稱" :disabled="isReadonly" class="el-select_box"></el-input>
     </el-form-item>
     <el-form-item class="rules" label="郵箱:" prop="email">
      <el-input v-model="ruleForm.email" placeholder="請輸入郵箱" :disabled="isReadonly" class="el-select_box"></el-input>
     </el-form-item> 
//動態(tài)生成的聯(lián)系人表單
     <div class="moreRules">
      <div class="moreRulesIn" v-for="(item, index) in ruleForm.moreNotifyObject" :key="item.key">
       <el-form-item class="rules" label="通知對象:" :prop="'moreNotifyObject.' + index +'.notifyobject'" :rules="moreNotifyOjbectRules.moreNotifyOjbectName">
        <el-input v-model="item.notifyobject" placeholder="請輸入聯(lián)系人名稱" :disabled="isReadonly" class="el-select_box"></el-input>
       </el-form-item>
       <el-form-item class="rules" label="郵箱:" :prop="'moreNotifyObject.'+ index +'.email'" :rules="moreNotifyOjbectRules.moreNotifyOjbectEmail">
        <el-input v-model="item.email" placeholder="請輸入郵箱" :disabled="isReadonly" class="el-select_box"></el-input>
       </el-form-item>
       <el-button @click="deleteRules(item, index)" :disabled="isReadonly">刪除</el-button>
      </div>
     </div>
     <el-form-item v-show="!isRead">
      <el-button type="text" class="addUser" @click="addUser" :disabled="isReadonly"><i class="iconfont icon-tianjialianxiren"></i>添加更多聯(lián)系人</el-button>
     </el-form-item>

和普通表單驗證不同的是,動態(tài)表單要新增自己的驗證規(guī)則,和添加普通表單的方式一樣

ruleForm:{
  //普通表單的驗證規(guī)則
},
//新增表單的驗證規(guī)則
   moreNotifyOjbectRules: {
    moreNotifyOjbectName: [{ required: true, message: '請輸入聯(lián)系人名稱', trigger: 'blur' },
     {
      validator: (rule, value, callback) => {
       if (value.length > 15 || value.length < 2) {
        callback(new Error('長度必須為2~8個字符'))
       } else {
        var reg = new RegExp("[`~!@#$^&*()=|{}':',\\[\\].<>《》/?~!@#¥……&*()——|{}【】‘;:”“'。,、?]")
        if (reg.test(value)) {
         callback(new Error('不能含有特殊字符'))
        } else {
         callback()
        }
       }
      },
      trigger: 'change'
     }
    ],
    moreNotifyOjbectEmail: [{ required: true, message: '請輸入郵箱地址', trigger: 'blur' },
     { type: 'email', message: '請輸入正確的郵箱地址', trigger: 'blur' }
    ]
   }

這里需要注意的是:rules是每個表單都要都要添加的,有多個的話就要給每個表單綁定一個規(guī)則

<el-form-item class="rules" label="通知對象:" :prop="'moreNotifyObject.' + index +'.notifyobject'" :rules="moreNotifyOjbectRules.moreNotifyOjbectName">
<el-form-item class="rules" label="郵箱:" :prop="'moreNotifyObject.'+ index +'.email'" :rules="moreNotifyOjbectRules.moreNotifyOjbectEmail">

另外要注意的是:prop,正常表單驗證單項是依靠prop,但是動態(tài)生成話要用:prop。

書寫的語法是:prop="'moreNotifyObject.' + index +'.notifyobject'",moreNotifyObject是v-for綁定的數(shù)組,index是索引,notifyobject是表單綁定的v-model的名稱,然后用.把他們鏈接起來。

所以總結(jié)起來的語法就是:prop="'v-for綁定的數(shù)組.' + index + '.v-model綁定的變量'"

還有一個需要注意就是v-for的寫法,要將表單的model名寫進(jìn)去

<div class="moreRulesIn" v-for="(item, index) in ruleForm.moreNotifyObject" :key="item.key">

還有要注意的就是v-for綁定的數(shù)組也要在表單的對象里,寫在表單對象外是驗證不了的,在data里添加

ruleform:{
  moreNotifyObject: [{
     notifyobject: '',
     email: ''
    }]
}

然后新增聯(lián)系人的函數(shù)應(yīng)該這樣寫

 addUser() {
   this.ruleForm.moreNotifyObject.push({
    notifyobject: '',
    email: ''
   })
  }

同理刪除聯(lián)系人也是

deleteRules(item, index) {
   this.index = this.ruleForm.moreNotifyObject.indexOf(item)
   if (index !== -1) {
    this.ruleForm.moreNotifyObject.splice(index, 1)
   }
  }

如果一開始只想讓默認(rèn)必填的表單顯示,而新增的不顯示,如文章最開頭的表現(xiàn)一樣,則可以在methods中初始化v-for綁定的數(shù)組

methods:{
  //初始化數(shù)據(jù)
  initData(){
    this.ruleFrom.moreNotifyObject = []
  }}

總結(jié)

以上所述是小編給大家介紹的Vue+Element實現(xiàn)動態(tài)生成新表單并添加驗證功能,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復(fù)大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Vue.js中的圖片引用路徑的方式

    Vue.js中的圖片引用路徑的方式

    當(dāng)我們在Vue.js項目中引用圖片時,關(guān)于圖片路徑有以下幾種情形,下面通過本文給大家分享Vue.js中的圖片引用路徑的方式,感興趣的朋友一起看看吧
    2017-07-07
  • vue解決花括號數(shù)據(jù)綁定不成功的問題

    vue解決花括號數(shù)據(jù)綁定不成功的問題

    今天小編就為大家分享一篇vue解決花括號數(shù)據(jù)綁定不成功的問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-10-10
  • vue-cli中打包圖片路徑錯誤的解決方法

    vue-cli中打包圖片路徑錯誤的解決方法

    這篇文章主要介紹了vue-cli中打包圖片路徑錯誤的解決方法 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Vue2中的過濾器filter使用及注意說明

    Vue2中的過濾器filter使用及注意說明

    這篇文章主要介紹了Vue2中的過濾器filter使用及注意說明,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 詳解vue移動端日期選擇組件

    詳解vue移動端日期選擇組件

    小編給大家整理了關(guān)于vue移動端日期選擇組件的知識點總結(jié),希望能夠給讀者帶來幫助,一起學(xué)習(xí)參考下。
    2018-02-02
  • 解決vue2.0 element-ui中el-upload的before-upload方法返回false時submit()不生效問題

    解決vue2.0 element-ui中el-upload的before-upload方法返回false時submit(

    這篇文章主要介紹了vue2.0 element-ui中el-upload的before-upload方法返回false時submit()不生效的解決方法,這里需要主要項目中用的element-ui是V1.4.3,感興趣的朋友參考下吧
    2018-08-08
  • VSCode寫vue項目一鍵生成.vue模版,修改定義其他模板的方法

    VSCode寫vue項目一鍵生成.vue模版,修改定義其他模板的方法

    這篇文章主要介紹了VSCode寫vue項目一鍵生成.vue模版,修改定義其他模板的方法,本文給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-04-04
  • vue組件命名和props命名代碼詳解

    vue組件命名和props命名代碼詳解

    在本篇內(nèi)容里小編給大家講的是關(guān)于vue組件命名和props命名的相關(guān)知識點內(nèi)容,有興趣的朋友們可以學(xué)習(xí)下。
    2019-09-09
  • vue3中使用Apache?ECharts的詳細(xì)方法

    vue3中使用Apache?ECharts的詳細(xì)方法

    最近在做一些數(shù)據(jù)透析的項目需要用到報表圖,那么報表圖好用的有老牌的ECharts,比較新意的AntV,思前馬后的想了一下還是用了Echarts,這篇文章主要介紹了vue3中使用Apache?ECharts,需要的朋友可以參考下
    2022-11-11
  • Vue Router路由守衛(wèi)超詳細(xì)介紹

    Vue Router路由守衛(wèi)超詳細(xì)介紹

    路由守衛(wèi),簡單理解來說就是,當(dāng)用戶要進(jìn)行一些操作時,我需要用戶的一些信息或數(shù)據(jù)或行為,我判斷過后,才會同意用戶進(jìn)行操作,說到這里,我想大家心里都或多或少有點理解了吧
    2023-01-01

最新評論