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

element多個表單校驗的實現(xiàn)

 更新時間:2021年05月27日 17:05:52   作者:小白踩坑  
在項目中,經(jīng)常會遇到表單檢驗,在這里我分享在實際項目中遇到多個表單同時進行校驗以及我的解決方法,感興趣的可以了解一下

在項目中,經(jīng)常會遇到表單檢驗,單個表單檢驗可查看element的官網(wǎng)文檔,里面有詳細的介紹。在這里我分享在實際項目中遇到多個表單同時進行校驗以及我的解決方法,歡迎大家留言,一起探討相關技術,請多多指教。

這里主要用到 Promise 來解決。

關于Promise方法舉個例子來抽象理解:

周末想吃火鍋,打電話告訴小A,過來我這打火鍋,菜都齊了,就差點海鮮,你來的時候帶點。接著打電話找朋友小B,過來我這打火鍋,有海鮮,肉少了點,你來的時候帶點。在接著打電話找朋友小C:過來我這打火鍋,啥菜都有了,差點酒,你來的時候整幾瓶。還差一包火鍋底料,拿手機打電話,小D啊,來打活個,咋幾個都在,我這電爐不太行了,啥都準備好了,你把電爐帶過來,順便帶包底料。

吃火鍋這個事就成了,美滋滋。

但這個事吧。總不會一直順利,總有人來不了對吧,來不了這火鍋就吃不成了。

其實多個表單驗證,就和這差不多,每個表單都詢問一遍,如果大家都通過了,美滋滋,假如其中一個驗證失敗,那對不起,還得告訴用戶,填對了再說。

通過Promise,對每個表單執(zhí)行詢問檢測,無論結果如果,先進入Promise.all中,等待所有表單詢問完畢,如果大家就可以,就觸發(fā)then,美滋滋。反之,catch中執(zhí)行失敗響應就ok了。
 

     const formName = ['tableForm1', 'tableForm2', 'tableForm3']
      const validates = (item) => {
        return new Promise((resolve, reject) => {
          if (!this.$refs[item]) {
            resolve()
            return false
          }
          this.$refs[item].validate((valid) => {
            if (valid) {
              resolve()
            } else {
              reject(new Error('驗證不對'))
            }
          })
        })
      }
      Promise.all(formName.map(item => validates(item))).then(() => {
        console.log('成功')
      }).catch(() => {
        console.log('失敗')
      })
    }
  }

最后,在這里貼上完整代碼:

  <div class="home">
    <el-form :model="tableForm1" ref="tableForm1" :rules="rules1" label-width="100px" >
      <el-form-item label="價格" prop="price">
        <el-input v-model.number="tableForm1.price" autocomplete="off"></el-input>
      </el-form-item>
    </el-form>

    <el-form :model="tableForm2" ref="tableForm2" :rules="rules2" label-width="100px" >
      <el-form-item label="年齡" prop="age">
        <el-input v-model.number="tableForm2.age" autocomplete="off"></el-input>
      </el-form-item>
    </el-form>

    <el-form :model="tableForm3" ref="tableForm3" :rules="rules3" label-width="100px" >
      <el-form-item label="姓名" prop="name">
        <el-input v-model.number="tableForm3.name" autocomplete="off"></el-input>
      </el-form-item>
    </el-form>

    <el-button type="primary" @click="submitForm">提交</el-button>
    <el-button @click="resetForm">重置</el-button>
    
  </div>
</template>

<script>
export default {
  name: 'Home',
  data () {
    return {
      tableForm1: {
        price: ''
      },
      tableForm2: {
        age: ''
      },
      tableForm3: {
        name: ''
      },
      rules1: {
        price: [{ required: true, message: '價格不能為空', trigger: 'blur' }]
      },
      rules2: {
        age: [{ required: true, message: '年齡不能為空', trigger: 'blur' }]
      },
      rules3: {
        name: [{ required: true, message: '姓名不能為空', trigger: 'blur' }]
      }
    }
  },
  methods: {
    resetForm () {
      this.$refs.tableForm1.resetFields()
      this.$refs.tableForm2.resetFields()
      this.$refs.tableForm3.resetFields()
    },
    submitForm () {
      const formName = ['tableForm1', 'tableForm2', 'tableForm3']
      const validates = (item) => {
        return new Promise((resolve, reject) => {
          if (!this.$refs[item]) {
            resolve()
            return false
          }
          this.$refs[item].validate((valid) => {
            if (valid) {
              resolve()
            } else {
              reject(new Error('驗證不對'))
            }
          })
        })
      }
      Promise.all(formName.map(item => validates(item))).then(() => {
        console.log('成功')
      }).catch(() => {
        console.log('失敗')
      })
    }
  }
}
</script>

到此這篇關于element多個表單校驗的實現(xiàn)的文章就介紹到這了,更多相關element 表單校驗內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家! 

相關文章

  • vue使用自定義指令實現(xiàn)一鍵復制功能

    vue使用自定義指令實現(xiàn)一鍵復制功能

    在Vue中,通過自定義指令v-copy和document.execCommand方法,可以實現(xiàn)點擊按鈕復制內(nèi)容到剪貼板的功能,適用于處理長文本或多行文本的復制需求,而readonly屬性可避免內(nèi)容被修改和移動設備上的虛擬鍵盤干擾,感興趣的朋友一起看看吧
    2024-09-09
  • vue-cli中打包圖片路徑錯誤的解決方法

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

    這篇文章主要介紹了vue-cli中打包圖片路徑錯誤的解決方法 ,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-10-10
  • Vue使用v-viewer插件實現(xiàn)圖片預覽和縮放和旋轉等功能(推薦)

    Vue使用v-viewer插件實現(xiàn)圖片預覽和縮放和旋轉等功能(推薦)

    v-viewer是一個基于viewerjs封裝的vue圖片預覽組件,有預覽縮放拉伸旋轉切換拖拽等功能,支持配置化,這篇文章主要介紹了Vue使用v-viewer插件實現(xiàn)圖片預覽和縮放和旋轉等功能,需要的朋友可以參考下
    2023-02-02
  • vue等兩個接口都返回結果再執(zhí)行下一步的實例

    vue等兩個接口都返回結果再執(zhí)行下一步的實例

    這篇文章主要介紹了vue等兩個接口都返回結果再執(zhí)行下一步的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-09-09
  • vue如何點擊多個tab標簽打開關閉多個頁面

    vue如何點擊多個tab標簽打開關閉多個頁面

    這篇文章主要介紹了vue如何點擊多個tab標簽打開關閉多個頁面,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • 淺談Vue.js之初始化el以及數(shù)據(jù)的綁定說明

    淺談Vue.js之初始化el以及數(shù)據(jù)的綁定說明

    今天小編就為大家分享一篇淺談Vue.js之初始化el以及數(shù)據(jù)的綁定說明,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2019-11-11
  • 如何在Vue3和Vite項目中用SQLite數(shù)據(jù)庫進行數(shù)據(jù)存儲

    如何在Vue3和Vite項目中用SQLite數(shù)據(jù)庫進行數(shù)據(jù)存儲

    SQLite是一種嵌入式關系型數(shù)據(jù)庫管理系統(tǒng),是一個零配置、無服務器的、自給自足的、事務性的SQL數(shù)據(jù)庫引擎,這篇文章主要給大家介紹了關于如何在Vue3和Vite項目中用SQLite數(shù)據(jù)庫進行數(shù)據(jù)存儲的相關資料,需要的朋友可以參考下
    2024-03-03
  • Vue路由模塊化配置的完整步驟

    Vue路由模塊化配置的完整步驟

    這篇文章主要給大家介紹了關于Vue路由模塊化配置的相關資料,文中通過示例代碼介紹的非常詳細,對大家學習或者使用Vue具有一定的參考學習價值,需要的朋友們下面來一起學習學習吧
    2019-08-08
  • Vue文件如何代替?zhèn)鹘y(tǒng)的HTML文件

    Vue文件如何代替?zhèn)鹘y(tǒng)的HTML文件

    隨著前端工程化的不斷推進,傳統(tǒng)的HTML、CSS、JavaScript三者分離的開發(fā)模式逐漸顯露出一些不足之處,尤其是在構建復雜的單頁應用(SPA)時,Vue.js作為一個現(xiàn)代化的前端框架,提供了多種工具和技術來簡化開發(fā)流程,本文將探討.vue文件是如何替代傳統(tǒng)HTML文件的角色
    2024-10-10
  • 淺談Vue.js 組件中的v-on綁定自定義事件理解

    淺談Vue.js 組件中的v-on綁定自定義事件理解

    這篇文章主要介紹了淺談Vue.js 組件中的v-on綁定自定義事件理解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-11-11

最新評論

玉树县| 新龙县| 松溪县| 莱阳市| 河曲县| 当雄县| 沁源县| 化州市| 湘西| 新泰市| 屏山县| 怀来县| 宝清县| 上饶市| 河池市| 米易县| 区。| 周至县| 庆阳市| 新乡县| 安仁县| 炉霍县| 锡林浩特市| 静宁县| 正宁县| 舞钢市| 舒城县| 额济纳旗| 科技| 北海市| 尚志市| 隆化县| 望江县| 东乌珠穆沁旗| 闻喜县| 江达县| 左权县| 嘉兴市| 和政县| 新乡市| 雷波县|