国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

element-plus el-form 表單、表單驗(yàn)證 使用方法、注意事項(xiàng)

這篇具有很好參考價(jià)值的文章主要介紹了element-plus el-form 表單、表單驗(yàn)證 使用方法、注意事項(xiàng)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

element-plus@2.0.6 及之后的版本,表單驗(yàn)證不再是同步執(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àn)證通過(guò)后的業(yè)務(wù)代碼,可以去掉 async...await

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

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


表單定義規(guī)則

//表單驗(yàn)證規(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,接下來(lái),只需要在form-item中使用prop綁定驗(yàn)證規(guī)則即可

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

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

表單對(duì)象 formData: { name: '' }

表單元素 prop="name"

規(guī)則列表 rules: { name: [{...}] }

另外,驗(yàn)證嵌套屬性可以通過(guò) . 連接綁定:

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="請(qǐng)選擇性別">
            <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="請(qǐng)選擇生日!" 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: ''
})
// 驗(yàn)證函數(shù)
const checkPhone = (rule, value, callback) => {
  console.log(value);
  if (!Number.isInteger(Number(value))) {
    return callback(new Error('請(qǐng)輸入數(shù)字!'))
  } else if (String(value).length != 11) {
    return callback(new Error('您輸入的手機(jī)位數(shù)不是11位!'))
  } else {
    callback()
  }
}
// 驗(yàn)證函數(shù)
const checkpassword = (rule, value, callback) => {
  console.log(value);
  if (String(value).length > 12) {
    return callback(new Error('您輸入的密碼過(guò)長(zhǎng)!長(zhǎng)度不超過(guò)12位'))
  } else {
    callback()
  }
}
// 驗(yàn)證函數(shù)
const checkName = (rule, value, callback) => {
  if (value.length > 8) {
    return callback(new Error('您輸入的姓名過(guò)長(zhǎng)!'))
  } else {
    callback()
  }
}
//表單驗(yàn)證規(guī)則 
const rules = reactive({
  name: [{ validator: checkName, trigger: ['blur', 'change'] }],
  phone: [{ type: number, validator: checkPhone, trigger: ['blur', 'change'] }],
  password: [{ validator: checkpassword, trigger: ['blur'] }],
})

</script>

配置項(xiàng)以及其可選的值(詳細(xì)文檔鏈接)

Rules API:
  1. type: 指示要使用的驗(yàn)證器類型

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

  1. Required

required:必填/非必填

  1. Messages

message: 錯(cuò)誤提示

  1. Pattern

pattern: 值需校驗(yàn)通過(guò)的正則表達(dá)式

  1. Range

min, max: type為array, string時(shí),指長(zhǎng)度。為number時(shí),指大小

  1. Length

len: type為array, string時(shí),指長(zhǎng)度。為number時(shí),指值

  1. Enumerable

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

  1. Whitespace

  1. Deep Rules 對(duì)象的深層規(guī)則

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

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

  1. Transform

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

  1. validator

validator: 自定義驗(yàn)證方法

  1. asyncValidator

asyncValidator: 自定義異步驗(yàn)證方法

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

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

進(jìn)階

1、單項(xiàng)驗(yàn)證

可在表單的項(xiàng) ( < el-form-item > ) 中單獨(dú)設(shè)置驗(yàn)證規(guī)則

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

簡(jiǎn)寫(xiě):

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

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


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

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

正則校驗(yàn)

//regex.js
// 手機(jī)號(hào)或座機(jī)號(hào)
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: '請(qǐng)輸入醫(yī)生名稱', trigger: 'blur' }],
  title: [{ required: true, message: '請(qǐng)選擇職稱', trigger: 'change' }],
  tel: [{ pattern: reg_tel_phone, message: '請(qǐng)輸入正確的手機(jī)號(hào)或座機(jī)號(hào)', trigger: ['blur', 'change'] }]
},

注意:直接在vue模板中進(jìn)行單項(xiàng)驗(yàn)證使用正則校驗(yàn)時(shí),需將RegExp定義成響應(yīng)式變量。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-755710.html

到了這里,關(guān)于element-plus el-form 表單、表單驗(yàn)證 使用方法、注意事項(xiàng)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來(lái)自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場(chǎng)。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • element-plus的form表單驗(yàn)證Prop和Rules設(shè)置約定

    在使用表單驗(yàn)證過(guò)程中遇到深層對(duì)象(即嵌套對(duì)象)和數(shù)組或動(dòng)態(tài)創(chuàng)建數(shù)組對(duì)象時(shí)驗(yàn)證不再起作用或者出現(xiàn)錯(cuò)誤。 官網(wǎng)的說(shuō)明“ Form ?組件提供了表單驗(yàn)證的功能,只需為? rules ?屬性傳入約定的驗(yàn)證規(guī)則,并將? form-Item ?的? prop ?屬性設(shè)置為需要驗(yàn)證的特殊鍵值即可。 更多高

    2024年02月16日
    瀏覽(27)
  • el-form/el-form-item表單驗(yàn)證

    el-form/el-form-item表單驗(yàn)證

    如下圖所示,當(dāng)觸發(fā)表單驗(yàn)證后,輸入相應(yīng)的內(nèi)容,表單檢驗(yàn)通過(guò),但是上傳圖片后的表單校驗(yàn)沒(méi)有通過(guò),需要點(diǎn)擊表單提交觸發(fā)表單提交時(shí)的校驗(yàn)才有效 el-form 表單,在輸入內(nèi)容改變?cè)氐闹岛螅瑫?huì)觸發(fā)上層 el-form-item 的 el.form.chang / \\\'el.form.blur’事件,el-form-item 接收到此事

    2024年02月12日
    瀏覽(24)
  • el-form單個(gè)表單項(xiàng)校驗(yàn)方法;element-ui表單單個(gè)選項(xiàng)校驗(yàn);el-form單個(gè)表單校驗(yàn)

    el-form單個(gè)表單項(xiàng)校驗(yàn)方法;element-ui表單單個(gè)選項(xiàng)校驗(yàn);el-form單個(gè)表單校驗(yàn)

    當(dāng)我們使用element-ui的el-form時(shí),想在提交表單前對(duì)其中一個(gè)表單進(jìn)行驗(yàn)證時(shí)就可以使用element自帶的方法“validateField” 如圖: 使用示例

    2024年02月16日
    瀏覽(33)
  • el-form表單el-form-item prop一次驗(yàn)證兩個(gè)值

    1.表單添加兩個(gè)框,prop寫(xiě)上 2.data里寫(xiě),驗(yàn)證規(guī)則添加validator: this.validateFields 3.validateFields設(shè)置

    2024年02月10日
    瀏覽(27)
  • Vue - Element el-form 表單對(duì)象多層嵌套校驗(yàn)

    針對(duì)el-form的數(shù)據(jù)源是對(duì)象嵌套對(duì)象,在進(jìn)行數(shù)據(jù)綁定和校驗(yàn)時(shí)和單層的對(duì)象有一點(diǎn)區(qū)別, 具體是下面兩部分: 數(shù)據(jù)源: 1、 給 el-form-item 的 prop 設(shè)為: prop=\\\"health.height\\\" 。 v-model 設(shè)為: v-model=\\\"fromData.health.height\\\" 2、校驗(yàn)規(guī)則 rules 對(duì)象對(duì)應(yīng)的key設(shè)置為數(shù)據(jù)源內(nèi)部的值: \\\'health.heig

    2024年02月14日
    瀏覽(34)
  • el-form 動(dòng)態(tài)表單增減項(xiàng) (vue+element ui)

    el-form 動(dòng)態(tài)表單增減項(xiàng) (vue+element ui)

    1、點(diǎn)擊”+“,彈出彈窗,新增一項(xiàng),點(diǎn)擊”-“,刪除當(dāng)前項(xiàng) 代碼展示: html代碼: 注意: el-form-item(表單項(xiàng))循環(huán),綁定的數(shù)組寫(xiě)在form當(dāng)中 表單: 新增參數(shù)彈框: data: methods: 1、點(diǎn)擊新增,彈出新增彈窗,添加表單項(xiàng) 2、點(diǎn)擊”-“,刪除當(dāng)前表單項(xiàng)

    2024年02月02日
    瀏覽(27)
  • Vue+Element-UI el-form表單動(dòng)態(tài)檢驗(yàn)

    Vue+Element-UI el-form表單動(dòng)態(tài)檢驗(yàn)

    業(yè)務(wù)需求: 表單el-form 有一表單項(xiàng):發(fā)布時(shí)間 ,有5個(gè)選項(xiàng):今天、24小時(shí)、近3天、近7天和自定義時(shí)間,其中當(dāng)選擇自定義時(shí)間時(shí),后面跟著的日期時(shí)間選擇器是必填的,選中其他選項(xiàng)時(shí)則不需要。這就需要做到表單的動(dòng)態(tài)檢驗(yàn)。 最開(kāi)始實(shí)現(xiàn)方式是在當(dāng)前表單項(xiàng)中設(shè)置規(guī)則

    2024年02月11日
    瀏覽(26)
  • element plus el-form雙列布局及拓展任意布局

    element plus el-form雙列布局及拓展任意布局

    一般表單我們直接默認(rèn)布局,也就是單列布局,突然有個(gè)人員信息表單,需要雙列布局的需求,簡(jiǎn)單實(shí)現(xiàn)并拓展下 直接無(wú)腦div+flex布局實(shí)現(xiàn) 這樣的無(wú)腦實(shí)現(xiàn)實(shí)在是對(duì)不起付出的時(shí)間,不嫩復(fù)用是最大問(wèn)題 封裝el-form,增加slot // Form.vue // index.vue 依然不夠通用,因?yàn)椴季质枪潭?/p>

    2024年01月25日
    瀏覽(23)
  • element-ui的el-form表單一行兩個(gè)顯示效果

    element-ui的el-form表單一行兩個(gè)顯示效果

    效果圖: ???????? ?代碼: 因?yàn)榇a重復(fù)所以這些只寫(xiě)了一份 ? css設(shè)置這些就ok了?

    2024年02月11日
    瀏覽(32)
  • 在vue項(xiàng)目里,Element-Ui中el-form 實(shí)現(xiàn)一行兩個(gè)表單效果

    在vue項(xiàng)目里,Element-Ui中el-form 實(shí)現(xiàn)一行兩個(gè)表單效果

    1.首先使用elementUi中的Layout 24分欄進(jìn)行布局,將整個(gè)form表單放入24分欄里 如圖所示: 2.再將需要同行顯示的表單放入el-row中的el-col中去 3.然后再根據(jù)你的需求控制一下表單大小就ok啦? 全部代碼: 效果圖如下: ?

    2024年02月11日
    瀏覽(32)

覺(jué)得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包