最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue選擇下拉框動態(tài)變化表單方式

 更新時間:2022年08月02日 10:01:20   作者:風(fēng)如也  
這篇文章主要介紹了vue選擇下拉框動態(tài)變化表單方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教

vue選擇下拉框動態(tài)變化表單

場景

一個表單,在選擇某個下拉框時,動態(tài)添加選中該下拉框值對應(yīng)的輸入框或下拉框等。相當(dāng)于有部分輸入框或下拉框是動態(tài)變化的。

? ? <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="120px" class="demo-ruleForm">
? ? ? <el-form-item label="名稱" prop="name">
? ? ? ? <el-input v-model="ruleForm.name" maxLength="20" "></el-input>
? ? ? </el-form-item>
? ? ? <el-form-item label="方式" prop="type">
? ? ? ? <el-select v-model="ruleForm.type" placeholder="請選擇方式" style="width:100%;" @change="changeType" >
? ? ? ? ? <el-option v-for="(item, index) in typeList" :key="index" :label="item.name" :value="item.type"></el-option>
? ? ? ? </el-select>
? ? ? </el-form-item>
? ? ? <template v-for="(item, index) in Object.keys(ruleForm.info)">
? ? ? ? <el-form-item v-if="getNameByOptions(item)" :label="getNameByKey(item)" :prop="`info.${item}`" :key="index"
? ? ? ? ? :rules="{ required: true, message: `${getNameByKey(item)}不能為空`, trigger: 'change' }">
? ? ? ? ? <el-select v-model="ruleForm.info[item]" :placeholder="`請選擇${getNameByKey(item)}`" style="width:100%;" >
? ? ? ? ? ? <el-option v-for="(ele, key) in getNameByOptions(item)" :key="key" :label="ele.label" :value="ele.value"></el-option>
? ? ? ? ? </el-select>
? ? ? ? </el-form-item>
? ? ? ? <el-form-item v-else :label="getNameByKey(item)" :prop="`info.${item}`" :key="index"
? ? ? ? :rules="{ required: true, message: `${getNameByKey(item)}不能為空`, trigger: 'blur' }">
? ? ? ? ? <el-input v-model="ruleForm.info[item]" maxLength="20"></el-input>
? ? ? ? </el-form-item>
? ? ? </template>
? ? </el-form>

注意

如果要驗證動態(tài)生成的表單,可以單獨(dú)添加 :rules="{ required: true, message:KaTeX parse error: Expected 'EOF', got '}' at position 46: …gger: 'change' }?"`。`prop` 要寫成對應(yīng)…{item}" 才會生效。

使用 Object.keys(ruleForm.info) 來遍歷是為了防止動態(tài)生成的表單不具有唯一性,即輸入某一項值,其余輸入框也會填入相同的值。

? data() {
? ? return {
? ? ? ruleForm: {
? ? ? ? type: '',
? ? ? ? name: '',
? ? ? ? remark: '',
? ? ? ? info: {}
? ? ? },
? ? ? rules: {
? ? ? ? name: [
? ? ? ? ? { required: true, message: '請輸入名稱', trigger: 'blur' }
? ? ? ? ]
? ? ? },
? ? ? curForm: [],
? ? ? typeList: [] // 數(shù)據(jù)源類型
? ? }
? },
? methods: {
?? ?// 選擇不同的接入方式,輸出不同的輸入框
? ? changeType(val) {
? ? ? this.ruleForm.info = {}
? ? ? this.typeList.forEach(item => {
? ? ? ? if (item.type === val) {
? ? ? ? ? this.curForm = item.props
? ? ? ? }
? ? ? })
? ? ? this.curForm.forEach(item => {
? ? ? ? this.$set(this.ruleForm.info, item.field, '')
? ? ? })
? ? },
? ? ?// 根據(jù) key 獲取 label
? ? getNameByKey (key) {
? ? ? return this.curForm.find(item => item.field === key).label
? ? },
? ? // 根據(jù) key 獲取 options
? ? getNameByOptions (key) {
? ? ? return this.curForm.find(item => item.field === key).options
? ? }
? }

數(shù)據(jù)格式不同的話,學(xué)會靈活變換 

vue動態(tài)增減表單項

如圖,實現(xiàn)以下效果

通過點擊新增就會新增一個表單,刪除會刪除最后一個表單,也可以指定刪除哪個表單

代碼實現(xiàn)

<el-form ref="shopArr" :model="shopArr" :rules="shopRules">
        <table v-for="(item,index) in shopArr" :key="index" class="addTableShop">
          <tr>
            <td class="addTable-td1"><div class="table-item"><el-form-item label="1:" prop="settledPlatfoem" label-width="120px" /></div></td>
            <td class="addTable-td2">
              <el-radio-group v-model="item.settledType">
                <el-radio :label="1">淘寶</el-radio>
                <el-radio :label="2">京東</el-radio>
                <el-radio :label="3">天貓</el-radio>
                <el-radio :label="4">拼多多</el-radio>
                <el-radio :label="5">其他
                  <input v-if="item.settledType === 5" v-model="item.settledPlatfoem" placeholder="請輸入其他平臺" style="width: 105px; margin-left: 10px"/>
                </el-radio>
              </el-radio-group>
            </td>
            <td class="addTable-td1"><div class="table-item"><el-form-item label="2:" prop="shopName" label-width="120px" /></div></td>
            <td class="addTable-td2"><el-input v-model="item.shopName" /></td>
          </tr>
          <tr>
            <td class="addTable-td1"><div class="table-item"><el-form-item label="3:" prop="shopUrl" label-width="120px" /></div></td>
            <td class="addTable-td2"><el-input v-model="item.shopUrl" /></td>
            <td class="addTable-td1"><div class="table-item"><el-form-item label="4:" prop="operatingLicense" label-width="120px" /></div></td>
            <td class="addTable-td2"><el-input v-model="item.operatingLicense" /></td>
          </tr>
        </table>
        <el-button type="text" style="float: right" size="small" @click="addShop">新增</el-button>
        <el-button type="text" style="float: right" size="small" @click="deleteShop">刪除</el-button>
      </el-form>

method中

	// 添加表單
    add() {
      const item = {
        settledType: '',
        settledPlatfoem: '',
        shopName: '',
        shopUrl: '',
        operatingLicense: ''
      }
      this.shopArr.push(item)
    },
    // 刪除表單
    deleteShop() {
      this.shopArr.splice(this.shopArr.length - 1, 1)
    },

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • vue動態(tài)渲染svg、添加點擊事件的實現(xiàn)

    vue動態(tài)渲染svg、添加點擊事件的實現(xiàn)

    這篇文章主要介紹了vue動態(tài)渲染svg、添加點擊事件的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-03-03
  • vue 之 .sync 修飾符示例詳解

    vue 之 .sync 修飾符示例詳解

    這篇文章主要介紹了vue 之 .sync 修飾符的相關(guān)知識,非常不錯,具有參考借鑒價值 ,需要的朋友可以參考下
    2018-04-04
  • Vue組件設(shè)計-滾動置頂設(shè)計案例

    Vue組件設(shè)計-滾動置頂設(shè)計案例

    這篇文章主要介紹了Vue組件設(shè)計-滾動置頂設(shè)計案例,本文通過實例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2023-04-04
  • 如何解決npm i下載依賴的時候出現(xiàn)某依賴版本沖突

    如何解決npm i下載依賴的時候出現(xiàn)某依賴版本沖突

    這篇文章主要介紹了如何解決npm i 下載依賴的時候出現(xiàn)某依賴版本沖突問題,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2024-03-03
  • Vuex進(jìn)行Echarts數(shù)據(jù)頁面初始化后如何更新dom

    Vuex進(jìn)行Echarts數(shù)據(jù)頁面初始化后如何更新dom

    這篇文章主要為大家詳細(xì)介紹了使用Vuex做Echarts數(shù)據(jù)時,當(dāng)頁面初始化后如何更新dom,文中的示例代碼講解詳細(xì),有需要的小伙伴可以跟隨小編一起學(xué)習(xí)一下
    2023-11-11
  • Vue動態(tài)設(shè)置img的src不生效的問題解決

    Vue動態(tài)設(shè)置img的src不生效的問題解決

    本文主要介紹了Vue動態(tài)設(shè)置img的src不生效的問題解決,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2024-01-01
  • vscode vue 文件模板的配置方法

    vscode vue 文件模板的配置方法

    這篇文章主要介紹了vscode vue 文件模板的配置方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • 使用vscode格式化文檔無效的解決辦法(vue代碼格式化文檔無效)

    使用vscode格式化文檔無效的解決辦法(vue代碼格式化文檔無效)

    這篇文章主要給大家介紹了關(guān)于使用vscode格式化文檔無效的解決辦法,也就是vue代碼格式化文檔無效,這是最近突然遇到的一個問題,這里給大家介紹一下解決的辦法,需要的朋友可以參考下
    2023-08-08
  • Vue項目中實現(xiàn)無感Token刷新的示例

    Vue項目中實現(xiàn)無感Token刷新的示例

    在前端項目中,Token用于用戶認(rèn)證和權(quán)限管理,文章介紹了在Vue項目中實現(xiàn)Token的無感刷新,包括Token刷新的原理、攔截器的應(yīng)用和處理Token過期的方法,感興趣的可以了解一下
    2024-11-11
  • Vue封裝的組件全局注冊并引用

    Vue封裝的組件全局注冊并引用

    這篇文章主要為大家詳細(xì)介紹了Vue封裝的組件全局注冊并引用,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-07-07

最新評論

辽阳市| 柞水县| 台中市| 修水县| 临湘市| 天祝| 保靖县| 抚顺县| 无极县| 洪湖市| 徐水县| 仙桃市| 富裕县| 石渠县| 凌海市| 新竹县| 丰台区| 成武县| 阳山县| 琼海市| 武清区| 青田县| 开阳县| 称多县| 健康| 房产| 芮城县| 两当县| 井冈山市| 刚察县| 友谊县| 灵丘县| 伽师县| 临夏市| 平度市| 金溪县| 周宁县| 祁连县| 奉化市| 中江县| 永嘉县|