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

elementUI表單驗(yàn)證之動態(tài)表單驗(yàn)證

這篇具有很好參考價(jià)值的文章主要介紹了elementUI表單驗(yàn)證之動態(tài)表單驗(yàn)證。希望對大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

elementUI 中 Form 組件提供了表單驗(yàn)證的功能,只需要通過?rules?屬性傳入約定的驗(yàn)證規(guī)則,并將 Form-Item 的?prop?屬性設(shè)置為需校驗(yàn)的字段名即可。

(1)常用表單驗(yàn)證

elementui動態(tài)表單校驗(yàn),vue,elementui,前端,javascript,vue.js

<template>
	<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
		  <el-form-item label="活動名稱" prop="user">
			<el-input v-model="ruleForm.user"></el-input>
		  </el-form-item>
		  
		  <el-form-item label="活動名稱" prop="password">
		  	<el-input v-model="ruleForm.password"></el-input>
		  </el-form-item>
		
		  <el-form-item>
			<el-button type="primary" @click="submitForm('ruleForm')">登錄</el-button>
			<el-button @click="resetForm('ruleForm')">重置</el-button>
		  </el-form-item>
	</el-form>
</template>

<script>
  export default {
    data() {
      return {
        ruleForm: {
          user: '',
          password: '',
        },
        rules: {
          user: [
            { required: true, message: '請輸入賬號', trigger: 'blur' },
            { min: 3, max: 5, message: '長度在 3 到 5 個(gè)字符', trigger: 'blur' }
          ],
          password: [
            { required: true, message: '請輸入密碼', trigger: 'change' },
			{ min: 8, max: 16, message: '長度在 8 到 16 個(gè)字符', trigger: 'blur' }
          ],
        }
      };
    },
    methods: {
      submitForm(formName) {
        this.$refs[formName].validate((valid) => {
          if (valid) {
            alert('submit!');
          } else {
            console.log('error submit!!');
            return false;
          }
        });
      },
      resetForm(formName) {
        this.$refs[formName].resetFields();
      }
    }
  }
</script>

(2)自定義驗(yàn)證規(guī)則(關(guān)鍵字:validator)

elementui動態(tài)表單校驗(yàn),vue,elementui,前端,javascript,vue.js

?有些需要自定義的校驗(yàn)規(guī)則可以作為變量寫在data中,然后賦值給validator字段

elementui動態(tài)表單校驗(yàn),vue,elementui,前端,javascript,vue.js

?文章來源地址http://www.zghlxwxcb.cn/news/detail-516210.html

<template>
	<el-form :model="ruleForm" status-icon :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
		  <el-form-item label="密碼" prop="pass">
		    <el-input type="password" v-model="ruleForm.pass" autocomplete="off"></el-input>
		  </el-form-item>
		  <el-form-item label="確認(rèn)密碼" prop="checkPass">
		    <el-input type="password" v-model="ruleForm.checkPass" autocomplete="off"></el-input>
		  </el-form-item>
		  <el-form-item label="年齡" prop="age">
		      <el-input v-model.number="ruleForm.age"></el-input>
		  </el-form-item>
			
		  <el-form-item>
		    <el-button type="primary" @click="submitForm('ruleForm')">提交</el-button>
		    <el-button @click="resetForm('ruleForm')">重置</el-button>
		  </el-form-item>
	</el-form>
</template>

<script>
export default {
    data() {
      var checkAge = (rule, value, callback) => {
        if (!value) {
          return callback(new Error('年齡不能為空'));
        }
        setTimeout(() => {
          if (!Number.isInteger(value)) {
            callback(new Error('請輸入數(shù)字值'));
          } else {
            if (value < 18) {
              callback(new Error('必須年滿18歲'));
            } else {
              callback();
            }
          }
        }, 1000);
      };
      var validatePass = (rule, value, callback) => {
        if (value === '') {
          callback(new Error('請輸入密碼'));
        } else {
          if (this.ruleForm.checkPass !== '') {
            this.$refs.ruleForm.validateField('checkPass');
          }
          callback();
        }
      };
      var validatePass2 = (rule, value, callback) => {
        if (value === '') {
          callback(new Error('請?jiān)俅屋斎朊艽a'));
        } else if (value !== this.ruleForm.pass) {
          callback(new Error('兩次輸入密碼不一致!'));
        } else {
          callback();
        }
      };
      return {
        ruleForm: {
          pass: '',
          checkPass: '',
          age: ''
        },
        rules: {
          pass: [
            { required: true, validator: validatePass, trigger: 'blur' }
          ],
          checkPass: [
            { required: true, validator: validatePass2, trigger: 'blur' }
          ],
          age: [
            { required: true, validator: checkAge, trigger: 'blur' }
          ]
        }
      };
    },
    methods: {
      submitForm(formName) {
        this.$refs[formName].validate((valid) => {
          if (valid) {
            alert('submit!');
          } else {
            console.log('error submit!!');
            return false;
          }
        });
      },
      resetForm(formName) {
        this.$refs[formName].resetFields();
      }
    }
}
</script>

(3)動態(tài)表單驗(yàn)證

實(shí)際開發(fā)中很常見的需求,此時(shí)用rules、prop直接寫就對應(yīng)不上表單mode綁定的對象上的屬性,所以需要用循環(huán)的方式找到要校驗(yàn)的字段所在數(shù)據(jù)中的索引,然后再以字符串拼接的方式連上校驗(yàn)字段名稱:

elementui動態(tài)表單校驗(yàn),vue,elementui,前端,javascript,vue.js

?

elementui動態(tài)表單校驗(yàn),vue,elementui,前端,javascript,vue.js

?

<template>
	<div class="container">
		<el-form :model="form" ref="formRef" label-width="100px">
		  <el-form-item
		    prop="email"
		    label="郵箱"
		    :rules="[
		       { required: true, message: '請輸入郵箱地址', trigger: 'blur' },
		       { type: 'email', message: '請輸入正確的郵箱地址', trigger: ['blur', 'change'] }
		    ]">
		    <el-input v-model="form.email"></el-input>
		  </el-form-item>
		  
		  <el-form-item class="line-item"
		    v-for="(item, index) in form.domains"
		    :label="'域名' + index"
		    :key="item.key"
		    :prop="'domains.' + index + '.value'"
		    :rules="{
		      required: true, message: '域名不能為空', trigger: 'blur'
		    }">
		    <el-input v-model="item.value"></el-input>
			<el-button @click.prevent="removeDomain(index)">刪除</el-button>
		  </el-form-item>
		  
		  <el-form-item>
		    <el-button type="primary" @click="submitForm('formRef')">提交</el-button>
		    <el-button @click="addDomain">新增域名</el-button>
		    <el-button @click="resetForm('formRef')">重置</el-button>
		  </el-form-item>
		</el-form>
	</div>
</template>

<script>
export default {
    data() {
        return {
			form: {
			  domains: [{
				value: ''
			  }],
			  email: ''
			}
        };
    },
    methods: {
		submitForm(formName) {
			this.$refs[formName].validate((valid) => {
			  if (valid) {
				alert('submit!');
			  } else {
				console.log('error submit!!');
				return false;
			  }
			});
		},
        resetForm(formName) {
            this.$refs[formName].resetFields();
        },
        removeDomain(index) {
			this.form.domains.splice(index, 1)
        },
        addDomain() {
            this.form.domains.push({
               value: '',
               key: Date.now()
            });
        }
    }
}
</script>


<style lang="less" scoped>
.container{
	height: 100%;
	background-color: #fff;
	padding: 20px 100px;
	.line-item{
		/deep/.el-form-item__content{
			display: flex;
		}
	}
}	
</style>

到了這里,關(guān)于elementUI表單驗(yàn)證之動態(tài)表單驗(yàn)證的文章就介紹完了。如果您還想了解更多內(nèi)容,請?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

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

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

相關(guān)文章

  • 表單驗(yàn)證 ---- 在Vue2中使用ElementUI進(jìn)行表單驗(yàn)證

    表單驗(yàn)證 ---- 在Vue2中使用ElementUI進(jìn)行表單驗(yàn)證

    目錄 前言 給表單綁定對應(yīng)屬性 在data中定義數(shù)據(jù)對象和表單的定義規(guī)則 與數(shù)據(jù)對象雙向綁定 對整個(gè)表單進(jìn)行驗(yàn)證 在做項(xiàng)目時(shí),對于表單進(jìn)行驗(yàn)證是我們必不可少的 例如 搭建一個(gè)基本的登錄界面 表單嵌套一般都是 ??el-form el-form-item el-input? 進(jìn)行驗(yàn)證前,我們需要先 對el-

    2024年01月20日
    瀏覽(28)
  • VUE+ElementUI的表單驗(yàn)證二選一必填項(xiàng),并且滿足條件后清除表單驗(yàn)證提示
  • vue+elementui表單數(shù)組對象深層嵌套之自定義驗(yàn)證規(guī)則

    需求場景:在Vue+Elementui項(xiàng)目中,需要在表單的循環(huán)數(shù)組中,對某一深層嵌套的對象屬性制定自定義校驗(yàn)規(guī)則。

    2024年02月05日
    瀏覽(37)
  • vue3在table里使用elementUI的form表單驗(yàn)證

    ????????常規(guī)情況下。rules和formItem是一對一的。例如下面的情況,判斷表單內(nèi)的測試1和測試2是否為空。 ? ? ? ? 但是,如果在table中就按照常規(guī)的寫法如下會發(fā)現(xiàn)不管如何輸入或刪除都將觸發(fā)valid=false校驗(yàn)。如果在validator_isEmpty中打印value值會發(fā)現(xiàn),value一直未undefined。

    2024年02月04日
    瀏覽(32)
  • elementUI 非表單格式的校驗(yàn)

    elementUI 非表單格式的校驗(yàn)

    ?在普通表單中對輸入框、選擇框都有校驗(yàn)案例。 但是在自定義非空中如何進(jìn)行校驗(yàn)官網(wǎng)并沒有說明 關(guān)鍵代碼?clearValidate 方法清除校驗(yàn) 使用案例

    2024年02月16日
    瀏覽(23)
  • Ant vue中表單驗(yàn)證(動態(tài)校驗(yàn)、部分校驗(yàn))

    Ant vue中表單驗(yàn)證(動態(tài)校驗(yàn)、部分校驗(yàn))

    前提 :寫了超級復(fù)雜的表單,其中涉及了很多表單驗(yàn)證的地方,現(xiàn)一一記錄一下; ant-vue 版本1.7.8 vue 版本2.6.11 校驗(yàn)的原理大體相似,靈活應(yīng)用!! 需求: 1根據(jù) 讀寫方式 去動態(tài)自動校驗(yàn)規(guī)則; 2.只是監(jiān)聽掛載路徑,但因嵌套太多,表單監(jiān)聽的表單域不滿足自動監(jiān)聽的條件

    2024年02月05日
    瀏覽(30)
  • vue2:elementUI中Form 表單在特定情況下做動態(tài)rules添加刪除

    vue2:elementUI中Form 表單在特定情況下做動態(tài)rules添加刪除

    先看需求: (不想看的直接拉到最后) ?【需求說明】 6、如狀態(tài)為上架時(shí),庫存為必填,下架狀態(tài)時(shí),庫存為可填,前面無星號 實(shí)現(xiàn)方法:使用this.$set()和this.$delete() 上代碼: 由于設(shè)計(jì)商業(yè)隱私,代碼只上傳一部分: ? 表單data中原來的rules: 不添加上下架狀態(tài)的rules 在

    2023年04月08日
    瀏覽(25)
  • elementui表單的驗(yàn)證問題

    elementui表單的驗(yàn)證問題

    element ui 是基于vue的一個(gè)ui框架,用起來還是挺不錯(cuò)的,但是有時(shí)候還是會遇到一些摸不著頭腦的情況。 ? 我在打開一個(gè)新增數(shù)據(jù)的對話框的時(shí)候出現(xiàn)了一個(gè)問題,明明是新增,但是一打開就出現(xiàn)了錯(cuò)誤提示,這肯定是不對的,用戶體驗(yàn)也是極其不好的。到底是什么原因?qū)е?/p>

    2024年02月07日
    瀏覽(21)
  • vue表單驗(yàn)證rules無效,rules動態(tài)選擇,rules動態(tài)校驗(yàn),rules對象嵌套校驗(yàn)

    vue表單驗(yàn)證rules無效,rules動態(tài)選擇,rules動態(tài)校驗(yàn),rules對象嵌套校驗(yàn)

    一、問題描述 這里由一個(gè)動態(tài)切換規(guī)則校驗(yàn)引發(fā)的一些問題,整理了下,如下文所示。 這里有個(gè)需求就是,動態(tài)切換radio,對input輸入框校驗(yàn),界面如下 在網(wǎng)上找了一圈,用了第一種方法來解決,動態(tài)添加驗(yàn)證規(guī)則,方法如下 通過if判斷platformType是否等于2,然后添加規(guī)則,

    2023年04月19日
    瀏覽(36)
  • vue elementUI form組件動態(tài)添加el-form-item并且動態(tài)添加rules必填項(xiàng)校驗(yàn)方法

    vue elementUI form組件動態(tài)添加el-form-item并且動態(tài)添加rules必填項(xiàng)校驗(yàn)方法

    ): 核心代碼: prop里的值有格式要求,以本demo為例: “表單屬性數(shù)組key名 + ‘.’ + 索引值 + ‘.’ + 數(shù)組里對象的key名” ; rules里填寫校驗(yàn)不成功觸發(fā)條件和提示語;

    2024年02月05日
    瀏覽(36)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包