You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vuetify新手求助:如何实现Bottom Sheet式Datepicker?

实现Vuetify底部弹出式日期选择器

嘿,作为Vuetify新手想要做这个需求完全没问题,我给你整理了一套简单易懂的实现方案,跟着步骤来就行~

核心思路

我们要结合Vuetify自带的v-bottom-sheet(底部弹窗)和v-date-picker(日期选择器)组件,通过输入框的聚焦事件触发底部弹窗打开,选择日期后再同步到输入框并关闭弹窗。

完整实现代码

模板部分

<template>
  <v-container class="pa-4">
    <!-- 日期输入框 -->
    <v-text-field
      v-model="formattedDate"
      label="选择日期"
      readonly
      @focus="openSheet"
      placeholder="点击选择日期"
    ></v-text-field>

    <!-- 底部弹窗日期选择器 -->
    <v-bottom-sheet v-model="sheetOpen" persistent>
      <v-card>
        <v-card-title class="text-h5">选择日期</v-card-title>
        <v-card-text>
          <v-date-picker v-model="selectedDate" @input="onDateSelect"></v-date-picker>
        </v-card-text>
        <v-card-actions class="justify-end">
          <v-btn text @click="sheetOpen = false">取消</v-btn>
          <v-btn color="primary" @click="confirmDate">确认</v-btn>
        </v-card-actions>
      </v-card>
    </v-bottom-sheet>
  </v-container>
</template>

脚本部分

<script setup>
import { ref, computed } from 'vue'

// 控制底部弹窗的显示状态
const sheetOpen = ref(false)
// 存储选中的原始日期(ISO格式)
const selectedDate = ref(null)

// 格式化日期,用于显示在输入框中
const formattedDate = computed({
  get() {
    if (!selectedDate.value) return ''
    return new Date(selectedDate.value).toLocaleDateString('zh-CN', {
      year: 'numeric',
      month: '2-digit',
      day: '2-digit'
    })
  },
  set() {
    // 输入框只读,这里不需要处理设置逻辑
  }
})

// 打开底部弹窗
const openSheet = () => {
  sheetOpen.value = true
}

// 选择日期时的即时反馈(可选)
const onDateSelect = (date) => {
  selectedDate.value = date
}

// 确认选择日期,关闭弹窗
const confirmDate = () => {
  sheetOpen.value = false
}
</script>

关键细节说明

  • 输入框设置readonly:避免用户手动输入日期,只能通过点击聚焦打开选择器,保证日期格式统一
  • persistent属性:添加到v-bottom-sheet上,点击弹窗外部不会自动关闭,提升用户体验
  • 日期格式化:用computed属性把ISO格式的日期转换成用户友好的中文格式,你也可以根据需求调整格式规则
  • 事件绑定:通过@focus触发弹窗打开,确认按钮点击后关闭弹窗并同步日期

如果需要自定义底部弹窗的高度或者样式,可以给v-bottom-sheet添加height属性,比如height="600"来调整。

内容的提问来源于stack exchange,提问作者Alauddin Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 12:14:55