当前位置:首页 > VUE

vue实现日历多选

2026-02-19 00:19:58VUE

Vue 实现日历多选功能

安装依赖

使用 v-calendar 库可以快速实现日历多选功能。通过 npm 或 yarn 安装:

npm install v-calendar

基本配置

在 Vue 项目中引入 v-calendar 并注册组件:

import VCalendar from 'v-calendar';
import 'v-calendar/dist/style.css';

Vue.use(VCalendar);

实现多选功能

在模板中使用 <v-date-picker> 组件,并通过 mode="multiple" 开启多选模式:

<template>
  <v-date-picker
    v-model="selectedDates"
    mode="multiple"
    :min-date="new Date()"
    :attributes="attrs"
  />
</template>

<script>
export default {
  data() {
    return {
      selectedDates: [],
      attrs: [
        {
          highlight: {
            color: 'blue',
            fillMode: 'light',
          },
        },
      ],
    };
  },
};
</script>

自定义样式与交互

通过 :attributes 绑定高亮样式,标记已选日期。selectedDates 数组会动态更新用户选择的日期。

处理日期范围

如果需要选择日期范围而非离散日期,将 mode 改为 'range'

<v-date-picker v-model="range" mode="range" />

禁用特定日期

通过 :disabled-dates 属性禁用不可选的日期(如周末):

data() {
  return {
    disabledDates: [
      { weekdays: [1, 7] } // 禁用周末
    ]
  };
}

事件监听

监听 input 事件以处理日期选择变化:

<v-date-picker 
  @input="handleDateChange" 
  v-model="selectedDates" 
  mode="multiple" 
/>

移动端适配

v-calendar 默认支持响应式设计,若需进一步优化移动端体验,可添加 CSS 媒体查询:

@media (max-width: 640px) {
  .vc-container {
    width: 100%;
  }
}

完整示例

以下是一个完整的多选日历组件示例:

vue实现日历多选

<template>
  <div>
    <v-date-picker
      v-model="selectedDates"
      mode="multiple"
      :min-date="new Date()"
      :disabled-dates="disabledDates"
      :attributes="attrs"
      @input="logDates"
    />
    <p>已选日期: {{ selectedDates.join(', ') }}</p>
  </div>
</template>

<script>
export default {
  data() {
    return {
      selectedDates: [],
      attrs: [
        {
          highlight: {
            color: 'green',
            fillMode: 'solid',
          },
        },
      ],
      disabledDates: [
        { weekdays: [1, 7] },
      ],
    };
  },
  methods: {
    logDates() {
      console.log('Selected Dates:', this.selectedDates);
    },
  },
};
</script>

标签: 多选日历
分享给朋友:

相关文章

vue循环实现多选

vue循环实现多选

Vue循环实现多选的方法 在Vue中实现多选功能,可以通过v-for循环渲染选项,结合v-model绑定数组来记录选中的值。以下是具体实现方式: 基础实现方案 数据准备 在组件的data中定义选项…

vue 实现列表多选

vue 实现列表多选

Vue 实现列表多选的方法 使用 v-model 绑定数组 通过 v-model 绑定一个数组,可以自动处理多选逻辑。适用于复选框(checkbox)场景。 <template> &…

vue实现日历效果

vue实现日历效果

Vue实现日历效果的方法 使用第三方库 Vue生态中有多个成熟的日历组件库,如v-calendar或vue2-calendar,可以快速实现日历功能。安装后直接引入组件即可使用。 npm i…

vue表格实现日历

vue表格实现日历

Vue 表格实现日历的方法 基础表格结构 使用 el-table 或原生 HTML 表格,通过 v-for 循环生成日历格子。月份天数通过 new Date() 计算,动态渲染表格内容。 <t…

vue实现多选搜索

vue实现多选搜索

Vue 多选搜索实现方法 使用 Element UI 的 Select 组件 Element UI 提供了带有搜索功能的多选组件,适合快速实现需求。 安装 Element UI: npm inst…

vue 实现按钮多选

vue 实现按钮多选

实现按钮多选功能 在Vue中实现按钮多选功能可以通过以下方法完成,主要依赖v-model绑定数组和v-for动态渲染按钮。 数据绑定与渲染 定义一个数组selectedItems用于存储选中的按钮值…