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

Vue3 Element Plus表單自定義校驗的實現(xiàn)全過程

 更新時間:2025年04月03日 10:22:47   作者:Roco Ethan  
這篇文章主要介紹了Vue3 Element Plus表單自定義校驗的實現(xiàn)全過程,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教

一、效果

二、實現(xiàn)步驟

1.導(dǎo)入必要的組件和工具:

  • 使用import語句導(dǎo)入Vue3的refuseRouter,Element Plus的FormInstance類型,以及自定義的接口和API。
import { ref } from "vue";
import type { FormInstance } from 'element-plus'
import { useRouter } from "vue-router";
import { IUser2, IRules } from "@/interfaces/userInterface";
import { loginApi } from "@/apis/userApi";
import { User, Lock } from "@element-plus/icons-vue";

2.初始化數(shù)據(jù)

  • 創(chuàng)建ref實例user2,用于存儲用戶名和密碼。
  • 創(chuàng)建ref實例ruleFormRef,用于引用表單實例。
  • 創(chuàng)建ref實例rules,定義表單驗證規(guī)則,如用戶名和密碼的長度、格式等。
const $router = useRouter();
const user2 = ref<IUser2>({ account: "", password: "" });
const ruleFormRef = ref<FormInstance>()
const rules = ref<IRules>({
  account: [
    { required: true, message: "請輸入用戶名", trigger: "blur" },
    { pattern: /^[a-zA-Z0-9]{4,10}$/, message: "用戶名包含數(shù)字和字母大小寫4~10位", trigger: "blur" },
  ],
  password: [
    { required: true, message: "請輸入密碼", trigger: "blur" },
    { pattern: /^[a-zA-Z0-9!@#$%^&*(),._-]{6,12}$/, message: "密碼包含數(shù)字和字母大小寫,特殊字符6~12位", trigger: "blur" }
  ]
})

3.HTML模板

  • 使用el-form組件,設(shè)置refruleFormRefmodeluser2,rulesrules。
  • el-form-item中使用el-input組件,結(jié)合v-model雙向綁定數(shù)據(jù),并設(shè)置prop屬性與rules中的屬性相對應(yīng),用于自動驗證。
<el-form class="login_form" ref="ruleFormRef" :model="user2" :rules="rules">
   <h1>Hello</h1>
   <h2>歡迎來到白宮甄選</h2>
   <el-form-item class="login_item" prop="account">
       <el-input :prefix-icon="User" placeholder="請輸入用戶名" v-model="user2.account"> 
       </el-input>
   </el-form-item>
   <el-form-item class="login_item" prop="password">
      <el-input type="password" placeholder="請輸入密碼" :prefix-icon="Lock"                                   
        v-model="user2.password" show-password></el-input>
   </el-form-item>
   <el-form-item class="login_item">
      <el-button class="login_btn" type="primary" @click="submitForm(ruleFormRef)">登陸 
      </el-button>
   </el-form-item>
</el-form>

4.自定義校驗函數(shù)

  • 定義submitForm函數(shù),接收表單實例作為參數(shù)。
  • 在函數(shù)內(nèi)部,首先調(diào)用validate方法對表單進行驗證。如果驗證通過,調(diào)用登錄API并處理返回結(jié)果。如果驗證失敗,顯示錯誤通知。
const submitForm = (formEl: FormInstance | undefined) => {
  if (!formEl) return// 如果未定義表單實例,則直接返回,不執(zhí)行后續(xù)操作

  // 驗證表單,如果驗證通過則調(diào)用登錄接口
  formEl.validate(async(valid) => {
    if (valid) {
      // 調(diào)用登錄接口并傳入用戶信息
      const res = await loginApi(user2.value);
      console.log(res);
      
      // 根據(jù)接口返回結(jié)果進行相應(yīng)操作
      if (res.data.code !== 1) {
        ElNotification({
          title: '登陸失敗',
          message: '用戶名或密碼錯誤',
          type: 'error',
        })
      } else {
        // 登錄成功,存儲token并跳轉(zhuǎn)到首頁
        localStorage.setItem("token", res.data.data.token);
        $router.push("/home");
        ElNotification({
          title: '登陸成功',
          message: '歡迎回來',
          type: 'success',
        })
      }
    } else {
      // 驗證未通過,顯示錯誤通知
      ElNotification({
          title: '校驗',
          message: '請輸入用戶名和賬號',
          type: 'error',
        })
    }
  })
}

三、重置該表單項并移除校驗結(jié)果

  • resetFields

resetFields這個方法在編輯或者修改的時候會出現(xiàn)問題 '重置為初始值',修改過后初始值依舊在但是可以移除校驗效果,想要到達真正的清空表單可以使用watch監(jiān)聽重新把表單對象賦值為空對象。

watch(() => {
    return open.value
}, () => {
    if (!open.value) {
        form.value = {}
    }
})

四、單詞意思

prop在使用了 validate、resetFields 的方法時,該屬性是必填的。
required是否為必填項。
message報錯提示消息。
trigger驗證邏輯的觸發(fā)方式 ----'blur' | 'change'
blur失去焦點時進行驗證
change當值發(fā)生變化時進行驗證
pattern

正則表達式,該值必須匹配才能通過驗證

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 淺談vue獲得后臺數(shù)據(jù)無法顯示到table上面的坑

    淺談vue獲得后臺數(shù)據(jù)無法顯示到table上面的坑

    這篇文章主要介紹了淺談vue獲得后臺數(shù)據(jù)無法顯示到table上面的坑,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-08-08
  • vue-cli的index.html中使用環(huán)境變量方式

    vue-cli的index.html中使用環(huán)境變量方式

    這篇文章主要介紹了vue-cli的index.html中使用環(huán)境變量方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • Vue項目每次發(fā)版后要清理瀏覽器緩存問題解決辦法

    Vue項目每次發(fā)版后要清理瀏覽器緩存問題解決辦法

    最近項目更新頻繁,每次一更新客戶都說還跟之前的一樣,一查原因是因為客戶沒有清空瀏覽器的緩存,所以為了方便客戶看到最新版本,開始調(diào)研再發(fā)布新版本后自動清理緩存,這篇文章主要給大家介紹了關(guān)于Vue項目每次發(fā)版后要清理瀏覽器緩存問題的解決辦法,需要的朋友可以參考下
    2024-02-02
  • 通過Element ui往頁面上加一個分頁導(dǎo)航條的方法

    通過Element ui往頁面上加一個分頁導(dǎo)航條的方法

    這篇文章主要介紹了通過Element ui往頁面上加一個分頁導(dǎo)航條的方法,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-05-05
  • vue依賴包報錯問題eslint\lib\cli-engine\cli-engine.js:421

    vue依賴包報錯問題eslint\lib\cli-engine\cli-engine.js:421

    這篇文章主要介紹了vue依賴包報錯問題eslint\lib\cli-engine\cli-engine.js:421,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-08-08
  • Vue3目錄調(diào)整方案詳解

    Vue3目錄調(diào)整方案詳解

    默認生成的目錄結(jié)構(gòu)不滿足我們的開發(fā)需求,所以這里需要做一些自定義改動,本文給大家分享Vue3目錄調(diào)整方案,感興趣的朋友一起看看吧
    2023-11-11
  • Vue使用iframe實現(xiàn)瀏覽器打印兼容性優(yōu)化

    Vue使用iframe實現(xiàn)瀏覽器打印兼容性優(yōu)化

    在前端開發(fā)中,打印功能是一個常見的需求,但不同瀏覽器對打印樣式的支持差異較大,本文我們來看看Vue如何使用iframe實現(xiàn)瀏覽器打印兼容性優(yōu)化吧
    2025-04-04
  • vue首次賦值不觸發(fā)watch的解決方法

    vue首次賦值不觸發(fā)watch的解決方法

    今天小編就為大家分享一篇vue首次賦值不觸發(fā)watch的解決方法,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-09-09
  • Vue中引用JSON數(shù)據(jù)的方法小結(jié)

    Vue中引用JSON數(shù)據(jù)的方法小結(jié)

    在現(xiàn)代Web開發(fā)中,JSON是一種輕量級的數(shù)據(jù)交換格式,易于人閱讀和編寫,同時也易于機器解析和生成,Vue.js作為一個流行的前端框架,支持多種方式引入和處理JSON數(shù)據(jù),本文將詳細介紹幾種在Vue中引用JSON數(shù)據(jù)的方法,需要的朋友可以參考下
    2024-10-10
  • vue?ElementUI級聯(lián)選擇器回顯問題解決

    vue?ElementUI級聯(lián)選擇器回顯問題解決

    這篇文章主要介紹了vue?ElementUI級聯(lián)選擇器回顯問題解決,文章圍繞主題展開詳細的內(nèi)容介紹,具有一定的參考價值,需要的小伙伴可以參考一下
    2022-09-09

最新評論