Vue 可以直接绑定原生 HTML5 的月份选择器,简单高效:
当前位置:首页 > VUE

vue实现选择月份

2026-01-15 05:42:14VUE

使用 Vue 实现选择月份功能

方法一:使用原生 HTML <input type="month">

Vue 可以直接绑定原生 HTML5 的月份选择器,简单高效:

<template>
  <input type="month" v-model="selectedMonth" @change="handleMonthChange">
</template>

<script>
export default {
  data() {
    return {
      selectedMonth: ''
    }
  },
  methods: {
    handleMonthChange() {
      console.log('Selected month:', this.selectedMonth); // 格式为 YYYY-MM
    }
  }
}
</script>

注意:部分老旧浏览器可能不支持此类型输入框。

方法二:使用第三方组件库

Element UI 的日期选择器支持月份选择模式:

<template>
  <el-date-picker
    v-model="selectedMonth"
    type="month"
    placeholder="选择月份"
    format="YYYY-MM"
    value-format="YYYY-MM">
  </el-date-picker>
</template>

<script>
export default {
  data() {
    return {
      selectedMonth: ''
    }
  }
}
</script>

Ant Design Vue 的实现方式:

<template>
  <a-month-picker v-model:value="selectedMonth" format="YYYY-MM" />
</template>

<script>
import { ref } from 'vue';
export default {
  setup() {
    const selectedMonth = ref(null);
    return { selectedMonth };
  }
}
</script>

方法三:自定义月份选择组件

如需完全自定义样式和功能,可以手动实现:

<template>
  <div class="month-picker">
    <select v-model="selectedYear">
      <option v-for="year in years" :key="year" :value="year">{{ year }}</option>
    </select>
    <select v-model="selectedMonth">
      <option v-for="month in 12" :key="month" :value="month">
        {{ month }}月
      </option>
    </select>
  </div>
</template>

<script>
export default {
  data() {
    const currentYear = new Date().getFullYear();
    return {
      years: Array.from({length: 10}, (_, i) => currentYear + i),
      selectedYear: currentYear,
      selectedMonth: new Date().getMonth() + 1
    }
  },
  watch: {
    selectedYear() {
      this.$emit('change', `${this.selectedYear}-${this.selectedMonth}`);
    },
    selectedMonth() {
      this.$emit('change', `${this.selectedYear}-${this.selectedMonth}`);
    }
  }
}
</script>

<style>
.month-picker {
  display: flex;
  gap: 10px;
}
</style>

方法四:使用 Vue Date Picker 库

安装 vue-datepicker-next 库:

npm install vue-datepicker-next

使用示例:

<template>
  <date-picker
    v-model="selectedMonth"
    type="month"
    format="YYYY-MM"
    value-type="format"
  />
</template>

<script>
import DatePicker from 'vue-datepicker-next';
import 'vue-datepicker-next/index.css';

export default {
  components: { DatePicker },
  data() {
    return {
      selectedMonth: ''
    }
  }
}
</script>

每种方法适用于不同场景,原生输入最简单但兼容性有限,组件库提供丰富功能,自定义组件灵活性最高。根据项目需求选择合适方案。

vue实现选择月份

标签: vue
分享给朋友:

相关文章

vue实现自动翻译

vue实现自动翻译

Vue 实现自动翻译的方法 在 Vue 项目中实现自动翻译功能可以通过多种方式完成,以下是几种常见的方法: 使用第三方翻译 API 注册并获取翻译 API 的密钥(如 Google Translat…

vue实现裁剪头像

vue实现裁剪头像

Vue 实现头像裁剪功能 实现头像裁剪功能通常需要结合第三方库如 cropperjs 或 vue-cropper。以下是两种常见实现方式: 使用 vue-cropper 库 安装依赖: np…

vue页面分离的实现

vue页面分离的实现

Vue页面分离的实现方法 将Vue页面分离为多个组件或模块,有助于提升代码可维护性和复用性。以下是几种常见的实现方式: 组件化拆分 通过将页面拆分为多个子组件,每个组件负责特定功能或UI部分。使用…

用vue实现搜索查询

用vue实现搜索查询

实现搜索查询的基本思路 在Vue中实现搜索查询功能通常涉及以下几个核心部分:数据绑定、事件监听、过滤逻辑和UI反馈。以下是一个完整的实现方案。 数据绑定与输入框 创建一个Vue组件,包含一个输入框用…

vue实现下拉层级

vue实现下拉层级

Vue实现下拉层级菜单 使用Vue实现下拉层级菜单可以通过递归组件或动态渲染的方式完成。以下是两种常见实现方法: 递归组件实现 创建一个递归组件处理多级菜单结构: <template>…

vue实现录音文件播放

vue实现录音文件播放

使用 Vue 实现录音文件播放 准备工作 确保项目中已安装必要的依赖,如 vue-audio-recorder 或原生 Web Audio API。录音文件播放通常涉及录音、存储和播放三个核心环节。…