亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

vue elementui form表單驗(yàn)證的實(shí)現(xiàn)

 更新時(shí)間:2018年11月11日 16:31:58   作者:大象的脖子很長(zhǎng)  
這篇文章主要介紹了vue elementui form表單驗(yàn)證的實(shí)現(xiàn),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧

最近我們公司將前端框架由easyui 改為 vue+elementui 。自學(xué)vue兩周 就開(kāi)始了爬坑之路。業(yè)余時(shí)間給大家分享一下心得,技術(shù)新手加上第一次分享(小激動(dòng)),有什么不足的地方歡迎大家指正,多多交流才能共同進(jìn)步!

1.問(wèn)題 我們公司的項(xiàng)目比較大 表格 表單的頁(yè)面都不勝數(shù) ,基于此封裝了一些 可復(fù)用的代碼。

2.分析  vue給了我們不一樣的前端代碼體驗(yàn)  element ui 給我們一套功能強(qiáng)大的組件 減少了我們大量的開(kāi)發(fā)時(shí)間 。雙劍合璧 天下無(wú)敵!  但每個(gè)公司的代碼風(fēng)格不同  用戶的要求也比較刁端 ui團(tuán)隊(duì)設(shè)計(jì)完美 我們?cè)鯓硬拍苡眠@個(gè)兩把劍闖出自己的江湖 就需要大家好好琢磨了。

廢話不多說(shuō)!進(jìn)入正題

form表單驗(yàn)證規(guī)則的封裝

1.ellementui的處理    1. Form 組件上一次性傳遞所有的驗(yàn)證規(guī)則  2 .單個(gè)的表單域上傳遞屬性的驗(yàn)證規(guī)則 。

<el-form :model="dynamicValidateForm" ref="dynamicValidateForm" label-width="100px" class="demo-dynamic">
 <el-form-item
  prop="email"
  label="郵箱"
  :rules="[
   { required: true, message: '請(qǐng)輸入郵箱地址', trigger: 'blur' },
   { type: 'email', message: '請(qǐng)輸入正確的郵箱地址', trigger: 'blur,change' }
  ]"
 >
 <el-input v-model="dynamicValidateForm.mobil"></el-input>
 </el-form-item>
 <el-form-item 
  label="姓名:" 
  prop="name" 
  :rules="[{ required: true, message: '請(qǐng)輸入姓名', trigger: 'blur' }]">
 <el-input v-model="dynamicValidateForm.name"></el-input>
</el-form-item>
<el-form-item label="手機(jī)號(hào):" prop="mobil" 
  :rules="filter_rules({required:true,type:'mobile'})">
  <el-input v-model="dynamicValidateForm.mobil"></el-input>
</el-form-item>

</el-form>

觀察上面的代碼 有一個(gè)共性 單個(gè)的表單域上傳遞屬性的驗(yàn)證規(guī)則 ,給rules 屬性一個(gè)數(shù)組

重點(diǎn)來(lái)了 19行代碼是什么意思????

這就是我們封裝的全局可復(fù)用的方法   傳入需要的參數(shù),你就可以得到你想要的驗(yàn)證規(guī)則 rules 數(shù)組

在我們的工具包建一個(gè) js文件  我們的全局方法就有了

exports.install = function (Vue, options) {

  Vue.prototype.filter_rules = function (item){  
  
    return [{},{}]
    
   }
  

}

還要在main.js 中注冊(cè)

下面分享下我的js文件

import { validateMoneyNumber,qq,mobile,regexn,integer} from '@/utils/validate'

exports.install = function (Vue, options) {
  
  
  /**
   * 注意: 定義type 規(guī)則時(shí) 不用做非空驗(yàn)證 
   *    只需要傳入 required:true 即可
   * */
  /*保留兩位小數(shù)*/
  const isvalidateMoney = (rule, value, callback) => {
    if(value != null && value != "") {
      if(!validateMoneyNumber(value)) {
      callback(new Error('請(qǐng)輸入正確的數(shù)字,最多保留兩位小數(shù)!'))
      } else {
        callback()
      }
    }
    else{
      callback();
    }
  }
  /*驗(yàn)證QQ號(hào)碼*/
  const isvalidateQQ= (rule, value, callback) => {    
    if(value != null && value != "") {
      if(!qq(value)) {
        callback(new Error('您輸入的QQ號(hào)不正確!'))
      } else {
        callback()
      }
    }
    else{
      callback();
    }
  }
  /*驗(yàn)證手機(jī)號(hào)*/
    const isvalidateMobile= (rule, value, callback) => {    
    if(value != null && value != "") {
      if(!mobile(value)) {
        callback(new Error('您輸入的手機(jī)號(hào)不正確!'))
      } else {
        callback()
      }
    }
    else{
      callback();
    }
  }
    
    /*含有非法字符(只能輸入字母、漢字)*/
    const isvalidateRegexn= (rule, value, callback) => {    
    if(value != null && value != "") {
      if(!regexn(value)) {
        callback(new Error('含有非法字符(只能輸入字母、漢字)!'))
      } else {
        callback()
      }
    }
    else{
      callback();
    }
  }
    /*請(qǐng)輸入正整數(shù)*/
    const isvalidateInteger= (rule, value, callback) => {    
    if(value != null && value != "") {
      if(!integer(value)) {
        callback(new Error('請(qǐng)輸入正整數(shù)!'))
      } else {
        callback()
      }
    }
    else{
      callback();
    }
  }
  
  
  
  
  /**
   * 參數(shù) item 
   * required true 必填項(xiàng)
   * maxLength 字符串的最大長(zhǎng)度
   * min 和 max 必須同時(shí)給 min < max type=number
   * type 手機(jī)號(hào) mobile
   *   郵箱  email
   *   網(wǎng)址  url 
   *   各種自定義類型  定義在 src/utils/validate 中  持續(xù)添加中.......
   * */
  
  Vue.prototype.filter_rules = function (item){
    let rules = [];
    if(item.required){
      rules.push({ required: true, message: '該輸入項(xiàng)為必填項(xiàng)!', trigger: 'blur' });
    }
    if(item.maxLength){
      rules.push({ min:1,max:item.maxLength, message: '最多輸入'+item.maxLength+'個(gè)字符!', trigger: 'blur' })
    }
    if(item.min&&item.max){    
      rules.push({ min:item.min,max:item.max, message: '字符長(zhǎng)度在'+item.min+'至'+item.max+'之間!', trigger: 'blur' })
    }
    if(item.type){
      let type = item.type;
      switch(type) {
        case 'email':
          rules.push({ type: 'email', message: '請(qǐng)輸入正確的郵箱地址', trigger: 'blur,change' });
          break;
        case 'qq':
          rules.push( { validator: isvalidateQQ, trigger: 'blur,change' });
          break;
        case 'mobile':
          rules.push( { validator: isvalidateMobile, trigger: 'blur,change' });
          break;  
        case 'regexn':
          rules.push( { validator: isvalidateRegexn, trigger: 'blur,change' });
          break;  
        case 'integer':
          rules.push( { validator: isvalidateInteger, trigger: 'blur,change' });
          break;    
        default:
          rule.push({});
          break;
      }
    }
    
   
    return rules;
  };
};

看明白了嗎  第一行  是引入各種正則表達(dá)式   然后自定義校驗(yàn)規(guī)則    。  傳入你自定義的參數(shù) 就可以拿到你想要的規(guī)則   (很熟悉吧  參考 easyui 表單驗(yàn)證)

下面是效果

ElementUi rules表單驗(yàn)證

  • 可以在pattern中書(shū)寫(xiě)正則,并且配合elementUI進(jìn)行表單驗(yàn)證。
  • pattern 屬性規(guī)定用于驗(yàn)證輸入字段的模式。模式指的是正則表達(dá)式。
rules: {
  name:[{
    required: true,
    message: '請(qǐng)輸入用戶名',
    trigger: 'blur'
    },{
    min: 2,
    max: 5,
    message: '長(zhǎng)度在 2 到 5 個(gè)字符'
    },{
    pattern: /^[\u4E00-\u9FA5]+$/,
    message: '用戶名只能為中文'
  }
    //{ pattern:/^[a-zA-Z]w{1,4}$/, message: '以字母開(kāi)頭,長(zhǎng)度在2-5之間, 只能包含字符、數(shù)字和下劃線'}
  ],
  password: [{
    required: true,
    message: '請(qǐng)輸入密碼',
    trigger: 'blur'
  }, {
    min: 6,
    max: 30,
    message: '長(zhǎng)度在 6 到 30 個(gè)字符'
  }, {
    pattern: /^(\w){6,20}$/,
    message: '只能輸入6-20個(gè)字母、數(shù)字、下劃線'
  }],
  mobile:[{ 
    required: true,
    message: '請(qǐng)輸入手機(jī)號(hào)碼',
    trigger: 'blur'
  },
  {validator:function(rule,value,callback){
      if(/^1[34578]\d{9}$/.test(value) == false){
        callback(new Error("請(qǐng)輸入正確的手機(jī)號(hào)"));
      }else{
        callback();
      }
    }, trigger: 'blur'}
  ],
  //  pattern: /^1[34578]\d{9}$/, message: '目前只支持中國(guó)大陸的手機(jī)號(hào)碼' }
  peopleID:[{
    required: true,
    message: '請(qǐng)輸入身份證ID',
    trigger: 'blur'
    },{
      pattern:/(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/, message: '你的身份證格式不正確' 
    }
  ],
  carId:[
    {required: true, message: '請(qǐng)輸入車(chē)牌號(hào)', trigger: 'blur'}, 
    {pattern:/(^[\u4E00-\u9FA5]{1}[A-Z0-9]{6}$)|(^[A-Z]{2}[A-Z0-9]{2}[A-Z0-9\u4E00-\u9FA5]{1}[A-Z0-9]{4}$)|(^[\u4E00-\u9FA5]{1}[A-Z0-9]{5}[掛學(xué)警軍港澳]{1}$)|(^[A-Z]{2}[0-9]{5}$)|(^(08|38){1}[A-Z0-9]{4}[A-Z0-9掛學(xué)警軍港澳]{1}$)/,
     message: '常規(guī)格式:晉B12345'},
  ],
},

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • vue ssr 指南詳讀

    vue ssr 指南詳讀

    這篇文章主要介紹了vue ssr 指南詳讀,詳細(xì)的介紹了什么是SSR以及如何使用,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • vue draggable resizable gorkys與v-chart使用與總結(jié)

    vue draggable resizable gorkys與v-chart使用與總結(jié)

    這篇文章主要介紹了vue draggable resizable gorkys與v-chart使用與總結(jié),本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • 使用VueRouter的addRoutes方法實(shí)現(xiàn)動(dòng)態(tài)添加用戶的權(quán)限路由

    使用VueRouter的addRoutes方法實(shí)現(xiàn)動(dòng)態(tài)添加用戶的權(quán)限路由

    這篇文章主要介紹了使用VueRouter的addRoutes方法實(shí)現(xiàn)動(dòng)態(tài)添加用戶的權(quán)限路由,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2019-06-06
  • 基于canvas實(shí)現(xiàn)手寫(xiě)簽名(vue)

    基于canvas實(shí)現(xiàn)手寫(xiě)簽名(vue)

    這篇文章主要為大家詳細(xì)介紹了基于canvas實(shí)現(xiàn)簡(jiǎn)易的手寫(xiě)簽名,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2020-05-05
  • Avue自定義formslot調(diào)用rules自定義規(guī)則方式

    Avue自定義formslot調(diào)用rules自定義規(guī)則方式

    在Avue框架中,使用formslot自定義表格列時(shí)可能會(huì)遇到無(wú)法調(diào)用Avue的自定義校驗(yàn)規(guī)則的問(wèn)題,這通常發(fā)生在嘗試通過(guò)formslot自定義設(shè)置列的場(chǎng)景中,解決這一問(wèn)題的一個(gè)有效方法是將自定義列與Avue的校驗(yàn)規(guī)則通過(guò)特定方式連接起來(lái)
    2024-10-10
  • vue使用反向代理解決跨域問(wèn)題方案

    vue使用反向代理解決跨域問(wèn)題方案

    這篇文章主要為大家介紹了vue使用反向代理解決跨域問(wèn)題方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-01-01
  • vue實(shí)現(xiàn)圖片預(yù)覽放大以及縮小問(wèn)題

    vue實(shí)現(xiàn)圖片預(yù)覽放大以及縮小問(wèn)題

    這篇文章主要介紹了vue實(shí)現(xiàn)圖片預(yù)覽放大以及縮小問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-01-01
  • vue實(shí)現(xiàn)點(diǎn)擊圖片放大效果

    vue實(shí)現(xiàn)點(diǎn)擊圖片放大效果

    這篇文章主要為大家詳細(xì)介紹了vue實(shí)現(xiàn)點(diǎn)擊圖片放大效果,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2017-08-08
  • vue-tree-chart樹(shù)形組件的實(shí)現(xiàn)(含鼠標(biāo)右擊事件)

    vue-tree-chart樹(shù)形組件的實(shí)現(xiàn)(含鼠標(biāo)右擊事件)

    Vue-Tree-Chart,一個(gè)Vue.js2組件,本文就詳細(xì)的介紹一下vue-tree-chart樹(shù)形組件的實(shí)現(xiàn)(含鼠標(biāo)右擊事件),文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-02-02
  • vue原理Compile從新建實(shí)例到結(jié)束流程源碼

    vue原理Compile從新建實(shí)例到結(jié)束流程源碼

    這篇文章主要為大家介紹了vue原理Compile從新建實(shí)例到結(jié)束流程源碼,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-07-07

最新評(píng)論