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

【前端】vue3 接入antdv表單校驗(yàn)

這篇具有很好參考價(jià)值的文章主要介紹了【前端】vue3 接入antdv表單校驗(yàn)。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問(wèn)。

1/??背景

1、表單校驗(yàn)是非常常見(jiàn)的需求,能夠有效的攔截大部分的錯(cuò)誤數(shù)據(jù),提升效率。
2、快速的給使用者提示和反饋,用戶體驗(yàn)感非常好。
3、成熟的表單校驗(yàn)框架,開(kāi)發(fā)效率高,bug少。

最近使用的是vue3+antdv的架子,仔細(xì)探究一下表單校驗(yàn)的問(wèn)題,總結(jié)一下。

框架可能不同,主要看核心問(wèn)題,如果有幫助,歡迎一鍵三連。【春花秋時(shí)知多少】

2/??規(guī)則配置

首先查看官網(wǎng)的 模版,

構(gòu)建了一個(gè)表單,大概意思是直接寫(xiě)rules就可以使用了,我的目標(biāo)是這個(gè)字段需要長(zhǎng)度限制,

第一個(gè)常見(jiàn)錯(cuò)誤,rules的位置錯(cuò)誤,直接在item里面加了rule(或者rules ),都是無(wú)效的,需要加在表單上。

注:antd文檔是在表單項(xiàng)里面配置rules的,一般會(huì)對(duì)比兩個(gè)組件的文檔,有時(shí)候真的有用?。?!

 	...
      <a-form-item label="Activity name" name="name" :rules="[{ required: true, message: 'Please input your username!' }]">
        	<a-input v-model:value="formState.name" />
      </a-form-item>
</a-form>

上面的寫(xiě)法就是無(wú)效的,必須要放在 a-form,也就是表格上面,不能放在表單項(xiàng)上面。

    <a-form
	...
      :rules="rules"
      @finish="onFinish"
      @finishFailed="onFinishFailed"
    >
    ...
 </a-form>

對(duì)應(yīng)rules綁定位置,使用:rules 綁定對(duì)象

那它如何區(qū)分是哪個(gè)字段的校驗(yàn)規(guī)則呢?

rules是一個(gè)對(duì)象,對(duì)象的屬性名對(duì)應(yīng)字段的name名即可(類似map的key),通過(guò)key去找規(guī)則。

而且對(duì)象的值是一個(gè)對(duì)象數(shù)組,可以創(chuàng)建多個(gè)規(guī)則疊加,不用所有規(guī)則寫(xiě)到一個(gè)對(duì)象里面。

const rules = {
  name: [
    {
      required: true,
      message: "ass",
    },
  ],
    passwd: [
    {
      min: 5,
      message: "need",
    },
  ],
};

3/?? 規(guī)則編寫(xiě)

這個(gè)官方只給的例子,不是很清楚,但是它說(shuō)本質(zhì)上是使用的 async-validator

然后看了下,大概有這幾個(gè)點(diǎn)需要注意,基本就能完成大部分的規(guī)則校驗(yàn)。

1、類型判斷,比如校驗(yàn)值必須是數(shù)字,用這個(gè)就可以快速限定類型。支持的類型如下

string
number
boolean
method
regexp RegExp
integer
float
array
object
enum
date
url
hex
email
any

還支持正則,對(duì)于對(duì)象和數(shù)組,還可以進(jìn)一步處理,非常方便。

對(duì)象可以使用 fields 來(lái)限定屬性

const descriptor = {
  address: {
    type: 'object',
    required: true,
    options: { first: true },
    fields: {
      street: { type: 'string', required: true },
      city: { type: 'string', required: true },
      zip: { type: 'string', required: true, len: 8, message: 'invalid zip' },
    },
  },
};

數(shù)組 可以使用下標(biāo)位置來(lái)限定

const descriptor = {
  roles: {
    type: 'array',
    required: true,
    len: 3,
    fields: {
      0: { type: 'string', required: true },
      1: { type: 'string', required: true },
      2: { type: 'string', required: true },
    },
  },
};

數(shù)組還可以使用統(tǒng)一的defaultField 來(lái)處理每一個(gè)

const descriptor = {
  urls: {
    type: 'array',
    required: true,
    defaultField: { type: 'url' },
  },
};

2、trigger 指定校驗(yàn)時(shí)機(jī)

文檔上只支持 change(改變) 和 blur(聚焦),就是輸入的時(shí)候,和失去焦點(diǎn)的時(shí)候,比如提交的時(shí)候,根據(jù)需求選擇即可。

經(jīng)測(cè)試,默認(rèn)不處理 是 trigger: 'change',輸入校驗(yàn)

可以使用數(shù)組,來(lái)同時(shí)滿足多個(gè) trigger: ['blur', 'change'],

單個(gè) trigger: 'blur'

4/?? 校驗(yàn)邏輯錯(cuò)誤,值為undifined.

本來(lái)都寫(xiě)好了,發(fā)現(xiàn)出現(xiàn)的邏輯不對(duì),最簡(jiǎn)單的例子都實(shí)現(xiàn)不了。

const rules = {
  name: [
    {
      required: true,
      message: "must need",
    },
    {
      min: 5,
      message: "least 5.",
    },
  ],
};

針對(duì)同一個(gè)字段,兩條規(guī)則:
第一個(gè)規(guī)則:必填,如果沒(méi)填就提示第一個(gè),
第二個(gè)規(guī)則: 至少5位。

結(jié)果只有第一個(gè)提示,而且一直提示,不會(huì)消失。

我甚至是懷疑是只有配置了required: true, 才能正常使用,顯然不是,這個(gè)表示的是不能為空。即使算輸入合法的也會(huì)提示,根本沒(méi)有校驗(yàn)邏輯。

后面查了半天,還需要配置一個(gè) :model="formState",即需要傳遞表單對(duì)象過(guò)去,校驗(yàn)表單項(xiàng)的值從這里面取,應(yīng)該是而不能直接獲取表單項(xiàng)的值。這個(gè) :model 就是需要把表單對(duì)象傳遞過(guò)去。

  
    <a-form
      :model="formState"
      :name="state.formConfig.name"
      :label-col="{ span: 6 }"
      :wrapper-col="{ span: 8 }"
      :autocomplete="state.formConfig.autocomplete"
      :rules="rules"
      @finish="onFinish"
      @finishFailed="onFinishFailed"
    >
  
        <a-input v-model:value="item.value" />{{ item.value }}
      </a-form-item> -->

      <a-form-item label="Activity name" name="name">
        <a-input v-model:value="formState.name" />
      </a-form-item>
    </a-form>
...
const formState = reactive({
  name: "",
  region: undefined,
  date1: undefined,
  delivery: false,
  type: [],
  resource: "",
  desc: "",
});

const rules = {
  name: [
    {
      required: true,
      message: "must need",
    },
    {
      min: 5,
      message: "least 5.",
      // trigger: ["change", "blur"],
      // validator: checkeNickName,
    },
  ],
};

這個(gè)問(wèn)題困擾了我半天,寫(xiě)出來(lái),希望能幫到大家。

自定義校驗(yàn)器

這個(gè)很簡(jiǎn)單,直接寫(xiě)一個(gè)自定義校驗(yàn)方法就行了。

然后校驗(yàn)規(guī)則里面指定自己的校驗(yàn)方法, validator: checkeNickName, 即可

(注:就是用這個(gè)方法,然后debug出上面的mode未設(shè)置的問(wèn)題,自定義方法里面的value一直是undifine,-。-)

const checkeNickName = function (rule, value, callback) {
  console.log(rule, value, callback);
  if (value) {
    if (value.length > 5) {
      return Promise.reject("用戶昵稱長(zhǎng)度應(yīng)小于5個(gè)字符");
    } else {
      return Promise.resolve();
    }
  } else {
    return Promise.reject("請(qǐng)輸入用戶昵稱");
  }
};
const rules = {
  name: [
    {
      required: true,
      message: "must need",
    },
    {
      min: 5,
      message: "least 5.",
      validator: checkeNickName,
    },
  ],
};

拿到了值,自己怎么處理就好寫(xiě)了,成功 返回 return Promise.resolve();

失敗返回 return Promise.reject("用戶昵稱長(zhǎng)度應(yīng)小于5個(gè)字符");,里面的參數(shù)是提示信息,可以自定義

??總結(jié)

1、規(guī)則配置位置要正確,大部分問(wèn)題都是配置錯(cuò)誤,盡量搞懂每個(gè)配置的作用
2、本質(zhì)上是對(duì)async-validator 的封裝,可以從源頭查詢問(wèn)題
3、antdv表單校驗(yàn)需要傳遞表單對(duì)象過(guò)去,這個(gè)是特有的規(guī)定,按照要求編寫(xiě)。
4、自定義校驗(yàn),只需要寫(xiě)自定義校驗(yàn)方法 function (rule, value, callback),然后在rules的對(duì)象里面 使用 validator: checkeNickName, 調(diào)用這個(gè)方法即可文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-665342.html

到了這里,關(guān)于【前端】vue3 接入antdv表單校驗(yàn)的文章就介紹完了。如果您還想了解更多內(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)文章

  • Rspack 創(chuàng)建 vue2/3 項(xiàng)目接入 antdv(rspack.config.js 配置 less 主題)

    Rspack 創(chuàng)建 vue2/3 項(xiàng)目接入 antdv(rspack.config.js 配置 less 主題)

    Rspack CLI 官方文檔。 rspack.config.js 官方文檔。 創(chuàng)建項(xiàng)目(文檔中還提供了 Rspack 內(nèi)置 monorepo 框架 Nx 的創(chuàng)建方式,根據(jù)需求進(jìn)行選擇) 創(chuàng)建好項(xiàng)目并運(yùn)行,目前 Rspack 版本支持的工程模版: 默認(rèn)創(chuàng)建的 vue 項(xiàng)目為 vue3 : 如果需要其他版本,或其他框架的基礎(chǔ)工程,可到官方提

    2024年02月11日
    瀏覽(25)
  • 【Vue3+Ts project】vant4 實(shí)現(xiàn)觸發(fā)指定表單 rules校驗(yàn)、setTimeout和 setInterval 區(qū)別

    ? 一.使用 vant組件? validate屬性 實(shí)現(xiàn) 觸發(fā)指定輸入框rules校驗(yàn) ,滿足校驗(yàn)通過(guò)否則失敗 ?1. 給form表單綁定 ref并定義值名稱 ,然后為你想校驗(yàn)的表單綁定 name值 2.為ref的值名稱定義變量名?,然后 ref值名稱.value.validate(\\\'name值名稱\\\'),.then接收成功 , .catch 接收失敗 ? 二.?setT

    2024年02月11日
    瀏覽(92)
  • 前端vue3——實(shí)現(xiàn)二次元人物拼圖校驗(yàn)

    前端vue3——實(shí)現(xiàn)二次元人物拼圖校驗(yàn)

    大家好,我是yma16,本文分享關(guān)于 前端vue3——實(shí)現(xiàn)二次元人物拼圖校驗(yàn)。 vue3系列相關(guān)文章: vue3 + fastapi 實(shí)現(xiàn)選擇目錄所有文件自定義上傳到服務(wù)器 前端vue2、vue3去掉url路由“ # ”號(hào)——nginx配置 csdn新星計(jì)劃vue3+ts+antd賽道——利用inscode搭建vue3(ts)+antd前端模板 認(rèn)識(shí)vite_vue3 初

    2024年02月04日
    瀏覽(19)
  • 07. vue3+vite+qiankun搭建微應(yīng)用前端框架,并接入vue3微應(yīng)用

    07. vue3+vite+qiankun搭建微應(yīng)用前端框架,并接入vue3微應(yīng)用

    因?yàn)闃I(yè)務(wù)系統(tǒng)接入的需要,決定將一個(gè)vue3+vite+ts的主應(yīng)用系統(tǒng),改造成基于qiankun的微應(yīng)用架構(gòu)。此文記錄了改造的過(guò)程及vue3微應(yīng)用接入的種種問(wèn)題。 網(wǎng)上有很多關(guān)于微應(yīng)用改造的案例,但很多都沒(méi)寫(xiě)部署之后什么情況。寫(xiě)了部署的,沒(méi)有實(shí)操部署在二級(jí)目錄、三級(jí)目錄是什

    2024年01月16日
    瀏覽(17)
  • vue3中,form表單校驗(yàn)之特殊字符校驗(yàn)、手機(jī)號(hào)、身份證號(hào)、百分制數(shù)字 & route和router的寫(xiě)法 & setup的兩種用法 & rules中校驗(yàn)之blur和change

    vue3中,form表單校驗(yàn)之特殊字符校驗(yàn)、手機(jī)號(hào)、身份證號(hào)、百分制數(shù)字 route和router的寫(xiě)法 setup的兩種用法 rules中校驗(yàn)之blur和change 1、寫(xiě)法一 index.vue 2、寫(xiě)法二完整版 index.vue 2、校驗(yàn)文件 srcutilsvalidate.ts

    2024年02月05日
    瀏覽(23)
  • 微前端-qiankun:vue3-vite 接入 vue3、nuxt3、vue2、nuxt2等子應(yīng)用

    一、了解qiankun.js qiankun - qiankun 1.1、簡(jiǎn)單, 任意 js 框架均可使用。微應(yīng)用接入像使用接入一個(gè) iframe 系統(tǒng)一樣簡(jiǎn)單,但實(shí)際不是 iframe。 1.2、完備, 幾乎包含所有構(gòu)建微前端系統(tǒng)時(shí)所需要的基本能力,如 樣式隔離、js 沙箱、預(yù)加載等。解耦,與技術(shù)無(wú)關(guān)。 1.3、生產(chǎn)可用, 已

    2024年02月03日
    瀏覽(46)
  • 基于VUE3+Layui從頭搭建通用后臺(tái)管理系統(tǒng)(前端篇)十一:通用表單組件封裝實(shí)現(xiàn)

    基于VUE3+Layui從頭搭建通用后臺(tái)管理系統(tǒng)(前端篇)十一:通用表單組件封裝實(shí)現(xiàn)

    ??本章實(shí)現(xiàn)通用表單組件,根據(jù)實(shí)體配置識(shí)別實(shí)體屬性,并自動(dòng)生成編輯組件,實(shí)現(xiàn)對(duì)應(yīng)數(shù)據(jù)填充、校驗(yàn)及保存等邏輯。 1. 詳細(xì)課程地址: https://edu.csdn.net/course/detail/38183 2. 源碼下載地址: 點(diǎn)擊下載

    2024年02月10日
    瀏覽(29)
  • el-form前端表單校驗(yàn)步驟詳細(xì)

    (1),F(xiàn)orm組件提供了表單驗(yàn)證的功能,只需要通過(guò)rules屬性傳入約定的驗(yàn)證規(guī)則,并將Form-Item的prop屬性設(shè)置為需校驗(yàn)的字段名即可。 (2),data-return里面加上formData,在這里寫(xiě)上限定條件,通過(guò)rules屬性傳入約定的驗(yàn)證規(guī)則 (3),提交驗(yàn)證 例子:

    2024年02月16日
    瀏覽(21)
  • 前端-el-form表單校驗(yàn),如何校驗(yàn)手機(jī)號(hào)和身份證號(hào)

    分成三部分處理 首先,要在模板的prop里添加校驗(yàn)規(guī)則 el-form-item label=\\\"身份證號(hào):\\\" prop=\\\"identificationNumber\\\" 然后申明規(guī)則rules identificationNumber:[ ? ? ? ? ? ? ? ? {required: true, validator: validatorIdCard, trigger: \\\'blur\\\'} ? ? ? ? ? ? ? ? ], phone: [ ? ? ? ? ? ? ? ? { required: true, validator: v

    2024年04月25日
    瀏覽(28)
  • vue表單及遍歷表單校驗(yàn)rules以及validator校驗(yàn)器的使用

    vue表單及遍歷表單校驗(yàn)rules以及validator校驗(yàn)器的使用

    為防止用戶犯錯(cuò),盡可能更早地發(fā)現(xiàn)并糾正錯(cuò)誤。 Element中Form (表單)組件提供了表單驗(yàn)證的功能,只需要通過(guò) rules 屬性傳入約定的驗(yàn)證規(guī)則,并將 Form-Item 的 prop 屬性設(shè)置為需校驗(yàn)的字段名即可。 注意:prop對(duì)應(yīng)表單域 model 字段,使用 validate方法時(shí),該屬性是必填的。 目

    2024年02月08日
    瀏覽(30)

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包