日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

Vue實現動態顯示表單項填寫進度功能

瀏覽:249日期:2022-06-10 13:08:41
目錄
  • 一、序言
    • 1、業務需求
    • 2、目標效果
  • 二、原理
    • 三、全部代碼

      一、序言

      1、業務需求

      表單項填寫了,進度條就增加相應的比例,表單項未填寫,進度條就 減少相應的比例

      2、目標效果

      二、原理

      1、如何監測表單項是否有值,可以專門用對象存儲進度條增幅比例。如果表單項有值則存儲,沒有值則賦值為0,然后表單項使用@change事件監聽表單項是否變化,然后調用一個公共的計算進度條的方法,這個方法去遍歷calculateIntegrityForm對象的key對應的value值,然后累加這個value值,最后賦值給進度條

      form: {    // 存儲表單項的表單    name: "",    region: "",    type: [],    resource: "",},calculateIntegrityForm: {    // 存儲進度條比例的表單    name: 0,    region: 0,    type: 0,    resource: 0,}
          // 監聽特殊資源變化    resourceChangeFn(val) {      this.form.resource = val;      this.updateProgress("resource", 25);    },    // 監聽活動性質變化    typeChangeFn(val) {      this.form.type = val;      this.updateProgress("type", 25);    },    // 監聽活動區域變化    regionChangeFn(val) {      this.form.region = val;      this.updateProgress("region", 25);    },    // 監聽活動名稱變化    nameChangeFn(val) {      this.form.name = val;      this.updateProgress("name", 25);    },    // 監聽進度條變化    updateProgress(key, num) {      let sum = 0;      if (this.isEmpty(this.form[key])) {// 監聽的元素為空this.calculateIntegrityForm[key] = 0;      } else {// 監聽的元素不為空this.calculateIntegrityForm[key] = num;      }      for (let i in this.calculateIntegrityForm) {sum += this.calculateIntegrityForm[i];      }      this.percentage = sum;    },

      2、如何判斷對象、數組、字符串為空

          // 判斷變量字符串、數組、對象是否為空的公共方法    isEmpty(str) {      let thisType = typeof str;      if (str === "" || str === null || str === undefined) {// null、undefined// 這里之所以用全等于,因為:// 1.JS里,‘" == 0 == [],會被判斷成相同,而下方針對數字0和空數組做出單獨處理,故此處只需要單獨判斷‘"http:// 2.JS里,typeof null == object,為簡化下方object處判斷邏輯,故此處需要用全等判斷nullreturn true;      } else if (thisType == "string" && str.replace(/(^\s*)|(\s*$)/g, "").length == 0) {//stringreturn true;      } else if (thisType == "number" && isNaN(str) || str == 0) {//numberreturn true;      } else if (thisType == "object") {if (str instanceof Array) {// 數組為空判斷  return str.length == 0;} else { // 對象為空判斷  return JSON.stringify(str) == "{}";}      }      return false;// 傳入str不為空    }

      3、for in用于對象的遍歷,form[key]用于對象賦值

      三、全部代碼

      本項目只是一個demo,我全部寫在App.vue中,只安裝了一個elementui插件

      <template>  <div id="app">    <el-form :model="form" ref="form" label-width="100px">      <el-form-item label="活動名稱"><el-input v-model="form.name" @change="nameChangeFn" clearable></el-input>      </el-form-item>      <el-form-item label="活動區域"><el-select v-model="form.region" placeholder="請選擇活動區域" @change="regionChangeFn" clearable>  <el-option label="區域一" value="shanghai"></el-option>  <el-option label="區域二" value="beijing"></el-option></el-select>      </el-form-item>      <el-form-item label="活動性質"><el-checkbox-group v-model="form.type" @change="typeChangeFn">  <el-checkbox label="美食/餐廳線上活動" name="type"></el-checkbox>  <el-checkbox label="地推活動" name="type"></el-checkbox>  <el-checkbox label="線下主題活動" name="type"></el-checkbox>  <el-checkbox label="單純品牌曝光" name="type"></el-checkbox></el-checkbox-group>      </el-form-item>      <el-form-item label="特殊資源"><el-radio-group v-model="form.resource" @change="resourceChangeFn">  <el-radio label="線上品牌商贊助"></el-radio>  <el-radio label="線下場地免費"></el-radio></el-radio-group>      </el-form-item>      <el-form-item label="進度條"><el-progress :text-inside="true" :stroke-width="26" :percentage="percentage"></el-progress>      </el-form-item>    </el-form>  </div></template><script>export default {  name: "App",  data() {    return {      percentage: 0, // 百分比      form: {name: "",region: "",type: [],resource: "",      },      calculateIntegrityForm: {name: 0,region: 0,type: 0,resource: 0,      }    }  },  methods: {    // 監聽特殊資源變化    resourceChangeFn(val) {      this.form.resource = val;      this.updateProgress("resource", 25);    },    // 監聽活動性質變化    typeChangeFn(val) {      this.form.type = val;      this.updateProgress("type", 25);    },    // 監聽活動區域變化    regionChangeFn(val) {      this.form.region = val;      this.updateProgress("region", 25);    },    // 監聽活動名稱變化    nameChangeFn(val) {      this.form.name = val;      this.updateProgress("name", 25);    },    // 監聽進度條變化    updateProgress(key, num) {      let sum = 0;      if (this.isEmpty(this.form[key])) {// 監聽的元素為空this.calculateIntegrityForm[key] = 0;      } else {// 監聽的元素不為空this.calculateIntegrityForm[key] = num;      }      for (let i in this.calculateIntegrityForm) {sum += this.calculateIntegrityForm[i];      }      this.percentage = sum;    },    // 判斷變量字符串、數組、對象是否為空的公共方法    isEmpty(str) {      let thisType = typeof str;      if (str === "" || str === null || str === undefined) {// null、undefined// 這里之所以用全等于,因為:// 1.JS里,‘" == 0 == [],會被判斷成相同,而下方針對數字0和空數組做出單獨處理,故此處只需要單獨判斷‘"http:// 2.JS里,typeof null == object,為簡化下方object處判斷邏輯,故此處需要用全等判斷nullreturn true;      } else if (thisType == "string" && str.replace(/(^\s*)|(\s*$)/g, "").length == 0) {//stringreturn true;      } else if (thisType == "number" && isNaN(str) || str == 0) {//numberreturn true;      } else if (thisType == "object") {if (str instanceof Array) {// 數組為空判斷  return str.length == 0;} else { // 對象為空判斷  return JSON.stringify(str) == "{}";}      }      return false;// 傳入str不為空    }  },}</script><style>.el-form {  position: absolute;  top: 50%;  left: 50%;  transform: translate(-50%, -50%);}#app {  height: 100%;}</style>

      到此這篇關于Vue實現動態顯示表單項填寫進度功能的文章就介紹到這了,更多相關Vue動態顯示表單項填寫進度內容請搜索以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持!

      標簽: JavaScript
      日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
      国产视频一区二| 丁香婷婷久久| 精品国产欧美日韩一区二区三区| 精品国产乱码久久久久久1区2匹| 国产精品视频一区二区三区综合| 福利一区二区三区视频在线观看| 国产精品中文字幕制服诱惑| 国产高清精品二区| 久久久9色精品国产一区二区三区| 国产精品一区二区精品视频观看| 欧美天堂一区二区| 国产一区二区三区不卡av| bbw在线视频| 久久精品国产亚洲夜色av网站| 91久久黄色| 日韩欧美四区| 精品免费在线| 成人午夜精品| 国产欧美激情| 精品深夜福利视频| 亚洲精品极品少妇16p| 中文字幕成人| 成人国产精品一区二区免费麻豆| 国产日韩电影| 好看的亚洲午夜视频在线| 日本不卡一区二区三区| 成人精品高清在线视频| 中文亚洲欧美| 日韩综合在线| 一区二区电影在线观看| 久久国产乱子精品免费女| 欧美国产美女| 丝袜脚交一区二区| 成人羞羞视频在线看网址| 91成人精品视频| 日韩av自拍| 视频一区二区三区入口| 国产精品一站二站| 偷拍欧美精品| 欧美自拍一区| 久久国产高清| 欧洲精品一区二区三区| 亚洲免费中文| 欧美国产不卡| 欧美午夜三级| 国产99久久久国产精品成人免费| 亚洲人妖在线| 久久一区二区三区电影| 国产精品色在线网站| 91久久中文| 国产精品毛片一区二区在线看| 亚洲专区视频| 欧美亚洲精品在线| 麻豆极品一区二区三区| 日韩视频一区| 国产精品久久久久av电视剧| 青草国产精品| 日韩精品一区第一页| 日韩一区三区| 国产aⅴ精品一区二区四区| 美日韩精品视频| 久久久五月天| 久久精品国产福利| 日本不卡视频在线观看| 日本精品影院| 理论片午夜视频在线观看| 欧美偷窥清纯综合图区| 视频一区二区不卡| 久久精品av| 国产在线观看91一区二区三区| 亚洲综合中文| 成人av二区| 欧美男人天堂| 高清av一区| 成人在线观看免费视频| 国产亚洲精品美女久久| 视频精品一区| 日本免费在线视频不卡一不卡二| 久久国产日本精品| 蜜臀国产一区| a国产在线视频| 成人精品久久| 日韩av在线中文字幕| 欧美成人一二区| 久久国产三级精品| 亚洲精品欧美| 综合激情一区| 视频一区视频二区中文字幕| 激情91久久| 午夜日韩av| 在线一区视频| 亚洲影院天堂中文av色| 亚洲精品美女91| 日本三级亚洲精品| 日韩欧美中文字幕一区二区三区 | 精品国模一区二区三区| 韩日一区二区| 精品欧美日韩精品| 国产91欧美| 欧美日韩尤物久久| 国产综合欧美| 免费在线观看视频一区| 中文字幕日韩高清在线| 日韩精品a在线观看91| 国产日韩欧美在线播放不卡| 国产日韩欧美一区在线| 精品视频黄色| 久久精品卡一| 久久午夜精品一区二区| 日韩高清不卡在线| 麻豆精品在线观看| 亚洲爱爱视频| 国产精品7m凸凹视频分类| 石原莉奈在线亚洲二区| 久久国产日韩欧美精品| 高清不卡一区| 亚洲精品2区| 日本99精品| 日韩欧美三级| 香蕉久久久久久久av网站| 中文不卡在线| 欧美激情五月| 激情久久久久久| 亚洲毛片在线| 国产第一亚洲| 亚洲一区成人| 国产精品久久久久久久久久妞妞| 免费日韩一区二区三区| 日韩精品一区二区三区免费观影| 99视频一区| 国产精品日本一区二区三区在线 | 日韩电影二区| 一区二区亚洲精品| 日韩国产在线观看一区| 美女视频黄久久| 婷婷激情综合| 国产精品一二| 久久在线免费| 欧美永久精品| 韩国三级一区| 日本vs亚洲vs韩国一区三区二区| 欧美国产偷国产精品三区| 免费欧美日韩| 国产一区二区三区四区| 红桃视频欧美| 精品一区二区三区四区五区| 尤物精品在线| 久久精品国产成人一区二区三区| 黄色在线一区| 福利一区和二区| 日韩中文字幕在线一区| 欧美日韩精品免费观看视欧美高清免费大片 | 精品视频久久| 亚洲在线电影| 国产一区二区久久久久| 深夜福利一区| 久久九九精品| 国产精品最新| 亚洲欧洲一区二区天堂久久| 另类综合日韩欧美亚洲| 丝袜美腿成人在线| 91看片一区| 嫩呦国产一区二区三区av| 男女精品网站| 亚洲综合电影| 国产精品久久久久久久久免费高清| 欧美日韩国产综合网| 国产一区二区亚洲| 日本午夜精品视频在线观看| 欧美亚洲精品在线| 精品一区二区三区四区五区| 五月国产精品| 日韩视频不卡| 91亚洲人成网污www| 欧美亚洲综合视频| 亚洲一级淫片| 国产亚洲毛片| 亚洲福利专区| 波多视频一区| 精品日韩一区| 欧美精品1区| 国产麻豆精品| 日韩高清在线不卡| 免费人成黄页网站在线一区二区| 欧美不卡高清一区二区三区| 成人污污视频| 精品日韩一区| 狂野欧美性猛交xxxx| 五月激激激综合网色播| 国产精品日韩欧美一区| 久久精品青草| 91精品一区二区三区综合在线爱| 九九久久国产| 美女久久久久久 | 国产亚洲网站| 欧美午夜不卡| 国产二区精品| 午夜精品影院| 欧美日韩视频一区二区三区| 久久久久国产一区二区|