Vue根据A下拉框选择不同项控制B下拉框是否禁用选择或下拉项只显示某项

news/2024/8/30 8:59:20 标签: vue.js

在Vue中,你可以使用v-model指令将下拉框的值绑定到数据属性上,并使用v-bind:disabled或简写为:disabled来控制下拉框是否禁用。同时,你也可以使用v-ifv-showv-else等指令根据条件显示或隐藏某些下拉项。

以下是一个示例:

<template>
  <div>
    <!-- 第一个下拉框 -->
    <select v-model="selected1">
      <option value="" disabled>请选择</option>
      <option v-for="item in items1" :key="item.value" :value="item.value">{{ item.text }}</option>
    </select>

    <!-- 第二个下拉框,是否禁用取决于第一个下拉框的选择 -->
    <select v-model="selected2" :disabled="selected1 === 'option1'">
      <option value="" disabled>请选择</option>
      <option v-for="item in items2" :key="item.value" :value="item.value">{{ item.text }}</option>
    </select>

    <!-- 第三个下拉框,只能选择某个选项取决于第一个下拉框的选择 -->
    <select v-model="selected3">
      <option value="" disabled>请选择</option>
      <option v-for="item in items3" :key="item.value" :value="item.value" :disabled="selected1 !== 'option1' && item.value !== 'onlyOption'">{{ item.text }}</option>
    </select>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selected1: '',
      selected2: '',
      selected3: '',
      items1: [
        { text: '选项1', value: 'option1' },
        { text: '选项2', value: 'option2' }
      ],
      items2: [
        { text: '选项1', value: 'option1' },
        { text: '选项2', value: 'option2' }
      ],
      items3: [
        { text: '唯一选项', value: 'onlyOption' },
        { text: '其他选项', value: 'otherOption' }
      ]
    }
  }
}
</script>

在这个例子中,第二个下拉框会根据第一个下拉框的选择来决定是否禁用,第三个下拉框则只会在第一个下拉框选择“选项1”时允许选择“唯一选项”。

针对于下拉项源是数据字典的上面那种写法无法清空已选择其他选项值的情况,因此需要使用v-on:change事件监听器来响应下拉框的选择变化,并根据选择的值更新其他下拉框的数据。

以下是一个示例:

<template>
  <div>
    <!-- A下拉框 -->
    <select v-model="selectedA" @change="updateSelectedB">
      <option value="" disabled>请选择</option>
      <option v-for="item in itemsA" :key="item.value" :value="item.value">{{ item.text }}</option>
    </select>

    <!-- B下拉框,只展示某个选项取决于A下拉框的选择 -->
    <select v-model="selectedB">
      <option value="" disabled>请选择</option>
      <option v-for="item in itemsB" :key="item.value" :value="item.value" v-if="selectedA === 'option1' && item.value === 'onlyOption'">{{ item.text }}</option>
      <option v-for="item in itemsB" :key="item.value" :value="item.value" v-else>{{ item.text }}</option>
    </select>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selectedA: '',
      selectedB: '',
      itemsA: [
        { text: '选项1', value: 'option1' },
        { text: '选项2', value: 'option2' }
      ],
      itemsB: [
        { text: '唯一选项', value: 'onlyOption' },
        { text: '其他选项', value: 'otherOption' }
      ]
    }
  },
  methods: {
    updateSelectedB() {
      if (this.selectedA === 'option1') {
        this.selectedB = 'onlyOption'; // 设置B下拉框的值为“唯一选项”
      } else {
        this.selectedB = ''; // 清空B下拉框的值
      }
    }
  }
}
</script>

在这个例子中,当A下拉框选择了“选项1”时,B下拉框只会显示“唯一选项”,并且将其值设置为“onlyOption”。如果A下拉框选择了其他选项,则B下拉框的值会被清空。


http://www.niftyadmin.cn/n/5560820.html

相关文章

策略模式+代理模式实现

背景 在业务处理的过程中&#xff0c;可能会遇到接收某些参数&#xff0c;通过参数来判断要走不同的逻辑&#xff0c;不同的策略&#xff0c;这时候就可以用到策略模式。 如果在策略执行之前或者之后需要有一些公共的操作&#xff0c;那么就通过代理模式来实现。 下面是实现的…

数学建模如何创新

参加数学建模竞赛时候&#xff0c; 你有没有发现每次接触到一道数模题的时候&#xff0c;由于自己现有的数学知识匮乏&#xff0c;几乎无从入手&#xff0c;于是就自然而然地上网查找资料&#xff0c;看看前人做过的论文。结果看过之后以后自己做这道题就不知不觉地被之前看过的…

初识XXE漏洞及ctfshow做题(373-378)

初识XXE漏洞 1.XXE简介 XXE就是XML外部实体注入&#xff0c;当允许引用外部实体时&#xff0c; XML数据在传输中有可能会被不法分子被修改&#xff0c;如果服务器执行被恶意插入的代码&#xff0c;就可以实现攻击的目的攻击者可以通过构造恶意内容&#xff0c;就可能导致任意…

Springboot 项目 Maven 依赖冲突解决总结

引言 在使用Spring Boot和Maven进行项目开发时&#xff0c;依赖冲突是一个常见的问题。这些冲突可能会导致编译错误、运行时异常或不一致的行为。以下是一些解决Maven依赖冲突的策略和步骤&#xff1a; 1. 理解依赖冲突 在Maven中&#xff0c;依赖冲突通常发生在两个或多个依…

牛客周赛 Round 51 (C++)

目录 A-小红的同余_牛客周赛 Round 51 (nowcoder.com) 思路&#xff1a; 代码&#xff1a; B-小红的三倍数_牛客周赛 Round 51 (nowcoder.com) 思路&#xff1a; 代码&#xff1a; C-小红充电_牛客周赛 Round 51 (nowcoder.com) 思路&#xff1a; 代码&#xff1a; …

基于嵌入式Linux的高性能车载娱乐系统设计与实现 —— 融合Qt、FFmpeg和CAN总线技术

随着汽车智能化的发展&#xff0c;车载娱乐系统已成为现代汽车的标配。本文介绍了一个基于Linux的车载娱乐系统的设计与实现过程。该系统集成了音视频娱乐、导航、车辆信息显示等功能&#xff0c;旨在提供安全、便捷、丰富的驾驶体验。 1. 项目概述 随着汽车智能化的发展&…

pytest钩子hook使用2

pytest是一种用于编写单元测试的Python库。它允许程序员编写测试用例来验证代码的正确性&#xff0c;并提供了一系列的勾子&#xff08;hooks&#xff09;来在测试的不同阶段执行一些额外的操作。 使用pytest的勾子&#xff0c;可以在测试运行过程中插入自定义代码。下面是一些…

vue3 项目的创建、组合式API、rective和ref、watch函数

vue3项目的创建&#xff1a; npm init vuelatest 在执行上述代码以后&#xff0c;按需勾选项目所需的东西就可以 然后再命令行依次执行&#xff1a; // 进入项目 cd vuedemo //安装下来对应的包 npm install //启动项目 npm run dev文件解读&#xff1a; package.json &am…