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

element-plus?el-form表單驗證使用方法以及注意事項

 更新時間:2023年12月05日 10:55:24   作者:柑橘烏云_  
這篇文章主要給大家介紹了關(guān)于element-plus?el-form表單驗證使用方法以及注意事項的相關(guān)資料,表單驗證能通過設(shè)置驗證規(guī)則驗證用戶的輸入,并對不規(guī)范的輸入做出對應(yīng)提示,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下

element-plus@2.0.6 及之后的版本,表單驗證不再是同步執(zhí)行的了

另外,element-plus@2.1.4 及之后的版本,才可按照官方文檔示例正常使用(使用的是兩者的中間版本的話,最好先自行確認(rèn)下正確的

const submitForm = async (formEl: FormInstance | undefined) => {
  if (!formEl) return
  await formEl.validate((valid, fields) => {
    if (valid) {
      console.log('submit!') // 位置1
    } else {
      console.log('error submit!', fields)
    }
  })
  // 位置2
}

上例中:

如果在“位置1”執(zhí)行表單驗證通過后的業(yè)務(wù)代碼,可以去掉 async...await

如果在“位置2”執(zhí)行,則需加上。否則,會直接跳過驗證

這樣,與異步校驗(三、6)的使用辦法就一致了,兩者可以取其一。element-plus@2.1.4及之后的推薦統(tǒng)一使用上例中的寫法

表單定義規(guī)則

//表單驗證規(guī)則 
const rules = reactive({
  name: [{ validator: checkName, trigger: ['blur', 'change'],required: true}],
  phone: [{ type: number, validator: checkPhone, trigger: ['blur', 'change'] }],
  password: [{ validator: checkpassword, trigger: ['blur'] }],
})

el-form配置

<el-form :model="formData" :rules="rules" ref="baseForm"></el-form>

上一步已經(jīng)為表單綁定了規(guī)則列表formData,接下來,只需要在form-item中使用prop綁定驗證規(guī)則即可

<el-form-item label="電話" style="width: 40%" prop="phone">
   <el-input v-model="formData.phone" type="text" autocomplete="off" disabled />
</el-form-item>

對應(yīng)關(guān)系:

  • 表單對象 formData: { name: '' }
  • 表單元素 prop="name"
  • 規(guī)則列表 rules: { name: [{...}] }

另外,驗證嵌套屬性可以通過 . 連接綁定:

  • formData: { obj: { name: '' } }
  • prop="obj.name"
  • baseRules: { 'obj.name': [{...}] }

完整demo

<template>
    <el-form :model="formData" :rules="rules" ref="ruleFormRef" status-icon label-width="120px" size="large">
        <el-form-item label="姓名" style="width: 40%" prop="name">
          <el-input v-model="form.name" type="text" autocomplete="off" />
        </el-form-item>
        <el-form-item label="性別" style="width: 40%" prop="sex">
          <el-select v-model="form.sex" placeholder="請選擇性別">
            <el-option label="男" :value=1 />
            <el-option label="女" :value=0 />
          </el-select>
        </el-form-item>
        <el-form-item label="生日" style="width: 40%" prop="birthday">
          <!-- <el-input v-model="form.birthday" type="text" autocomplete="off" /> -->
          <el-date-picker v-model="form.birthday" type="date" placeholder="請選擇生日!" style="width: 100%"
            value-format="YYYY-MM-DD" />
        </el-form-item>
        <el-form-item label="電話" style="width: 40%" prop="phone">
          <el-input v-model="form.phone" type="text" autocomplete="off" disabled />
        </el-form-item>
        <el-form-item label="密碼" style="width: 40%" prop="password">
          <el-input v-model="form.password" type="password" autocomplete="off" show-password />
        </el-form-item>
      </el-form>
</template>

<script setup>
let formData = reactive({
  birthday: '',
  name: '',
  phone: '',
  sex: 1,
  password: ''
})
// 驗證函數(shù)
const checkPhone = (rule, value, callback) => {
  console.log(value);
  if (!Number.isInteger(Number(value))) {
    return callback(new Error('請輸入數(shù)字!'))
  } else if (String(value).length != 11) {
    return callback(new Error('您輸入的手機(jī)位數(shù)不是11位!'))
  } else {
    callback()
  }
}
// 驗證函數(shù)
const checkpassword = (rule, value, callback) => {
  console.log(value);
  if (String(value).length > 12) {
    return callback(new Error('您輸入的密碼過長!長度不超過12位'))
  } else {
    callback()
  }
}
// 驗證函數(shù)
const checkName = (rule, value, callback) => {
  if (value.length > 8) {
    return callback(new Error('您輸入的姓名過長!'))
  } else {
    callback()
  }
}
//表單驗證規(guī)則 
const rules = reactive({
  name: [{ validator: checkName, trigger: ['blur', 'change'] }],
  phone: [{ type: number, validator: checkPhone, trigger: ['blur', 'change'] }],
  password: [{ validator: checkpassword, trigger: ['blur'] }],
})

</script>

配置項以及其可選的值

詳細(xì)文檔鏈接

Rules API:

  • type: 指示要使用的驗證器類型

type: string, number, boolean, method, regexp, integer, float, array, object, enum, date, url, hex, email, any

  • Required

required:必填/非必填

  • Messages

message: 錯誤提示

  • Pattern

pattern: 值需校驗通過的正則表達(dá)式

  • Range

min, max: type為array, string時,指長度。為number時,指大小

  • Length

len: type為array, string時,指長度。為number時,指值

  • Enumerable

enum: 例:{ type: 'enum', enum: ['admin', 'user', 'guest'] }

  • Whitespace

  • Deep Rules 對象的深層規(guī)則

fields: 對象的屬性名,數(shù)組的下標(biāo)

defaultField: 應(yīng)用于對象、數(shù)組內(nèi)的所有成員

  • Transform

transform: 方法,對值的預(yù)處理

  • validator

validator: 自定義驗證方法

  • asyncValidator

asyncValidator: 自定義異步驗證方法

trigger: 觸發(fā)驗證的方法,值可用字符串’blur’, ‘change’,也可是數(shù)組[‘blur’, ‘change’]

注意,規(guī)則數(shù)組是按序逐一被執(zhí)行驗證的(trigger='blur’時,更改input框的值不會觸發(fā)驗證)

進(jìn)階

單項驗證

可在表單的項 ( < el-form-item > ) 中單獨設(shè)置驗證規(guī)則

<el-form-item label="郵箱:" prop="email"
  :rules="[{ type: 'email', message: '郵箱格式錯誤', trigger: 'change' }]"
></el-form-item>

簡寫:

<el-form-item label="姓名:" prop="username" required />

對于字符串的非空校驗,element plus表單驗證提供了一種簡單的方式(能實現(xiàn)校驗,但有很大局限性,而且提示語是英文)

為了代碼的可維護(hù)性與美觀,盡量不要將規(guī)則寫在模板中。但某些情況下必須如此,比如,當(dāng)需要額外傳遞參數(shù)給validator時:

<el-form-item label="樣本類型:" prop="sampType"
    :rules="[{ validator: (rule, value, cb) => validateSampType(rule, value, cb, yourParams), trigger: 'change' }]"
></el-form-item>

正則校驗

//regex.js
// 手機(jī)號或座機(jī)號
export const reg_tel_phone = /(^((\+86)|(86))?(1[3-9])\d{9}$)|(^(0\d{2,3})-?(\d{7,8})$)/
//doctor.vue
import { reg_tel_phone } from '@/assets/regex'
rules: {
  name: [{ required: true, message: '請輸入醫(yī)生名稱', trigger: 'blur' }],
  title: [{ required: true, message: '請選擇職稱', trigger: 'change' }],
  tel: [{ pattern: reg_tel_phone, message: '請輸入正確的手機(jī)號或座機(jī)號', trigger: ['blur', 'change'] }]
},

注意:直接在vue模板中進(jìn)行單項驗證使用正則校驗時,需將RegExp定義成響應(yīng)式變量。

總結(jié)

到此這篇關(guān)于element-plus el-form表單驗證使用方法以及注意事項的文章就介紹到這了,更多相關(guān)element-plus el-form表單驗證內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue.js實現(xiàn)圖書管理功能

    vue.js實現(xiàn)圖書管理功能

    這篇文章主要為大家詳細(xì)介紹了vue.js實現(xiàn)圖書管理功能,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-09-09
  • Vue中使用Tailwind CSS的具體方法

    Vue中使用Tailwind CSS的具體方法

    本文主要介紹了Vue中使用Tailwind CSS的具體方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2023-04-04
  • Vue3插槽Slot實現(xiàn)原理詳解

    Vue3插槽Slot實現(xiàn)原理詳解

    這篇文章主要為大家介紹了Vue3插槽Slot實現(xiàn)原理詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07
  • 詳解Axios統(tǒng)一錯誤處理與后置

    詳解Axios統(tǒng)一錯誤處理與后置

    這篇文章主要介紹了詳解Axios統(tǒng)一錯誤處理與后置,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • 關(guān)于axios的proxy代理配置解析

    關(guān)于axios的proxy代理配置解析

    這篇文章主要介紹了關(guān)于axios的proxy代理配置解析,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-07-07
  • 詳解key在Vue列表渲染時究竟起到了什么作用

    詳解key在Vue列表渲染時究竟起到了什么作用

    這篇文章主要介紹了key在Vue列表渲染時究竟起到了什么作用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • 詳解vantUI框架在vue項目中的應(yīng)用踩坑

    詳解vantUI框架在vue項目中的應(yīng)用踩坑

    這篇文章主要介紹了詳解vantUI框架在vue項目中的應(yīng)用踩坑,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-12-12
  • Vue實現(xiàn)電子簽名功能的完整代碼

    Vue實現(xiàn)電子簽名功能的完整代碼

    本文介紹了在Vue項目中實現(xiàn)電子簽名功能的步驟,包括將原始文檔轉(zhuǎn)換為圖片、使用`signature_pad`和`html2canvas`庫、調(diào)整簽名位置和縮放比例、合并圖片等步驟,并提供了完整的源碼,需要的朋友可以參考下
    2025-02-02
  • 淺析Vue3中Excel下載模板并導(dǎo)入數(shù)據(jù)功能的實現(xiàn)

    淺析Vue3中Excel下載模板并導(dǎo)入數(shù)據(jù)功能的實現(xiàn)

    這篇文章主要為大家詳細(xì)介紹了Vue3中的Excel數(shù)據(jù)管理,即下載模板并導(dǎo)入數(shù)據(jù)功能的實現(xiàn),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以參考一下
    2024-05-05
  • vue輪播圖插件vue-awesome-swiper的使用代碼實例

    vue輪播圖插件vue-awesome-swiper的使用代碼實例

    本篇文章主要介紹了vue輪播圖插件vue-awesome-swiper的使用代碼實例,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2017-07-07

最新評論

花莲县| 赤水市| 宿迁市| 金湖县| 德州市| 昭平县| 南华县| 青海省| 思茅市| 湘潭县| 密山市| 汉阴县| 昭觉县| 万源市| 郎溪县| 盐亭县| 宣城市| 定边县| 广东省| 岢岚县| 石阡县| 长春市| 延安市| 高淳县| 湄潭县| 福州市| 黔西县| 军事| 泸水县| 饶平县| 苏尼特左旗| 洪雅县| 侯马市| 汶上县| 昭平县| 巍山| 丹阳市| 汕尾市| 车险| 金湖县| 永新县|