表单日期选择器

<b-form-datepicker> 是一个 BootstrapVue 自定义日期选择器输入表单控件,它提供完全的 WAI-ARIA 合规性和国际化支持。

v2.5.0 起在 BootstrapVue 中提供

概述

作为 <b-calendar> 组件的表单控件包装组件,它提供了额外的验证状态表示和一个紧凑的界面。本机 HTML5 日期输入在表示、可访问性方面各不相同,并且在某些情况下不受所有浏览器支持。 <b-form-datepicker> 在所有浏览器平台和设备上提供一致且可访问的界面。

<template>
  <div>
    <label for="example-datepicker">Choose a date</label>
    <b-form-datepicker id="example-datepicker" v-model="value" class="mb-2"></b-form-datepicker>
    <p>Value: '{{ value }}'</p>
  </div>
</template>

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

<!-- b-form-datepicker.vue -->

<b-form-datepicker> 支持 <b-calendar> 中的许多可用属性,以及 <b-dropdown> 中的某些可用属性。

v-model 返回值

默认情况下,<b-form-datepicker> 将日期作为 YYYY-MM-DD 格式的字符串返回,这是原生浏览器 <input type="date"> 控件返回的相同格式。你可以通过设置 value-as-date 属性,让 <b-form-datepicker> 返回一个 Date 对象(没有时间部分)作为 v-model 值。

如果没有选择日期,<b-form-datepicker> 将返回一个空字符串 '',或者如果设置了 value-as-date 属性,则返回 null

请注意,当设置 value-as-date 属性时,返回的 Date 对象将位于浏览器的默认时区中。

如果 <b-form-datepicker>name 属性设置了值,则将创建一个隐藏的输入,其名称属性将设置为 name 属性的值,并且值属性将设置为所选日期,格式为 YYYY-MM-DD 的字符串。这将允许通过原生浏览器表单提交来提交 <b-form-datepicker> 选定的值。

禁用和只读状态

设置 disabled 属性将移除 <b-form-datepicker> 组件的所有交互性。

设置 readonly 属性将禁用选择日期,但会保持组件交互,允许日期导航。在只读状态下,v-model 将不会更新。

如需禁用特定日期或设置最小和最大日期限制,请参阅 日期约束 部分。

<template>
  <div>
    <b-form-group
      label="Select date picker interactive state"
      v-slot="{ ariaDescribedby }"
    >
      <b-form-radio-group
        v-model="state"
        :aria-describedby="ariaDescribedby"
        aria-controls="ex-disabled-readonly"
      >
        <b-form-radio value="disabled">Disabled</b-form-radio>
        <b-form-radio value="readonly">Readonly</b-form-radio>
        <b-form-radio value="normal">Normal</b-form-radio>
      </b-form-radio-group>
    </b-form-group>

    <b-form-datepicker
      id="ex-disabled-readonly"
      :disabled="disabled"
      :readonly="readonly"
    ></b-form-datepicker>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        state: 'disabled'
      }
    },
    computed: {
      disabled() {
        return this.state === 'disabled'
      },
      readonly() {
        return this.state === 'readonly'
      }
    }
  }
</script>

<!-- b-form-datepicker-disabled-readonly.vue -->

日期约束

最小和最大日期

通过 minmax 属性限制日历范围。这些属性接受格式为 YYYY-MM-DD 的日期字符串或 Date 对象。

<template>
  <div>
    <b-form-datepicker v-model="value" :min="min" :max="max" locale="en"></b-form-datepicker>
  </div>
</template>

<script>
  export default {
    data() {
      const now = new Date()
      const today = new Date(now.getFullYear(), now.getMonth(), now.getDate())
      // 15th two months prior
      const minDate = new Date(today)
      minDate.setMonth(minDate.getMonth() - 2)
      minDate.setDate(15)
      // 15th in two months
      const maxDate = new Date(today)
      maxDate.setMonth(maxDate.getMonth() + 2)
      maxDate.setDate(15)

      return {
        value: '',
        min: minDate,
        max: maxDate
      }
    }
  }
</script>

<!-- b-form-datepicker-min-max.vue -->

禁用日期

如果您需要在日期选择器中禁用特定日期,请将函数引用指定给 date-disabled-fn 属性。该函数传递两个参数

  • ymd 作为 YYYY-MM-DD 字符串的日期
  • date 作为 Date 对象的日期

该函数应返回 true(如果日期不能被选择(禁用)),或 false(如果日期可以被选择(启用))。请注意,该函数不能是异步的,并且应尽快返回一个值。

<template>
  <div>
    <b-form-datepicker v-model="value" :date-disabled-fn="dateDisabled" locale="en"></b-form-datepicker>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        value: ''
      }
    },
    methods: {
      dateDisabled(ymd, date) {
        // Disable weekends (Sunday = `0`, Saturday = `6`) and
        // disable days that fall on the 13th of the month
        const weekday = date.getDay()
        const day = date.getDate()
        // Return `true` if the date should be disabled
        return weekday === 0 || weekday === 6 || day === 13
      }
    }
  }
</script>

<!-- b-form-datepicker-disabled-dates.vue -->

请注意,minmax 日期约束在 date-disabled-fn 之前首先进行评估。

验证状态

<b-form-datepicker> 通过布尔值 state 属性支持无效和有效样式。将 state 设置为布尔值 false 将以无效样式设置输入,而将其设置为布尔值 true 将以有效样式设置输入。将 state 设置为 null 将不显示任何验证状态样式(默认)。

<template>
  <div>
    <label for="datepicker-invalid">Choose a date (invalid style)</label>
    <b-form-datepicker id="datepicker-invalid" :state="false" class="mb-2"></b-form-datepicker>
    <label for="datepicker-valid">Choose a date (valid style)</label>
    <b-form-datepicker id="datepicker-valid" :state="true"></b-form-datepicker>
  </div>
</template>

<!-- b-form-datepicker-invalid-valid.vue -->

请注意,<b-form-datepicker> 提供本机浏览器验证。

样式

变体

选定日期按钮(背景颜色)默认为 'primary' 主题变体。您可以通过 selected-variant 属性将其更改为任何 Bootstrap v4 主题变体颜色:'secondary''success''danger''warning''info' 等。

默认情况下,当天日期也将使用与选定日期相同的变体(文本颜色)突出显示。要为当天日期指定不同的主题颜色,请使用 today-variant 属性。

要完全禁用对今天的日期的高亮显示,请设置 no-highlight-today 属性。

导航按钮默认为 'secondary' 主题变体。您可以通过 nav-button-variant 属性来更改此设置。

控制大小

想要一个更小或更大的 <b-form-datepicker> 控件?将 size 属性设置为 'sm' 以获得更小的表单控件,或设置为 'lg' 以获得更大的表单控件。请注意,这不会影响弹出日历对话框的大小。

<template>
  <div>
    <label for="datepicker-sm">Small date picker</label>
    <b-form-datepicker id="datepicker-sm" size="sm" locale="en" class="mb-2"></b-form-datepicker>
    <label for="datepicker-lg">Large date picker</label>
    <b-form-datepicker id="datepicker-lg" size="lg" locale="en"></b-form-datepicker>
  </div>
</template>

<!-- b-form-datepicker-sizes.vue -->

占位符

当未选择日期时,通过 placeholder 属性向控件添加自定义占位符文本。如果未提供占位符,则使用 label-no-date-selected 属性的值。

<template>
  <div>
    <label for="datepicker-placeholder">Date picker with placeholder</label>
    <b-form-datepicker id="datepicker-placeholder" placeholder="Choose a date" locale="en"></b-form-datepicker>
  </div>
</template>

<!-- b-form-datepicker-placeholder.vue -->

可选控件

通过属性 today-buttonreset-buttonclose-button 向日历弹出窗口的底部添加可选控件按钮。

  • 今天按钮选择今天的日期
  • 重置按钮清除选定的日期,或将日期设置为属性 reset-value 的值(如果提供了该值)
  • 关闭按钮关闭日历弹出窗口

默认情况下,单击今天或重置按钮也会关闭日历弹出窗口,除非设置了属性 no-close-on-select

<template>
  <div>
    <label for="datepicker-buttons">Date picker with optional footer buttons</label>
    <b-form-datepicker
      id="datepicker-buttons"
      today-button
      reset-button
      close-button
      locale="en"
    ></b-form-datepicker>
  </div>
</template>

<!-- b-form-datepicker-buttons.vue -->

可选按钮的文本可以通过 label-today-buttonlabel-reset-buttonlabel-close-button 属性设置。由于页脚部分的宽度有限,建议保持这些标签简短。

请注意,如果今天的日期超出 minmax 日期范围限制,则 Set Today 按钮可能不会将控件设置为今天的日期。如果它超出范围,它将设置为 minmax(取决于哪个更接近今天的日期)。

使用下拉菜单属性 rightdropupdroprightdropleftno-flipoffset 来控制弹出日历的位置。

有关这些属性的效果和用法,请参阅 <b-dropdown> 定位部分

初始打开的日历日期

v2.7.0+

默认情况下,当未选择日期时,打开日历视图时,将设置为当前月份(或如果今天的日期超出 minmax 的范围,则设置为 minmax 日期)。可以通过 initial-date 属性指定日期来更改此行为。初始日期属性将用于确定最初向用户显示的日历月份。它不会设置组件的值。

深色模式

想要一个带有深色背景而不是浅色背景的弹出窗口吗?将 dark 属性设置为 true 以启用深色背景。

可选的十年导航按钮

设置属性 show-decade-nav 以启用日期选择器的日期导航工具栏中的上一个和下一个十年按钮。

属性 label-prev-decadelabel-next-decade 属性可用于为十年按钮提供自定义标签文本。

有关示例用法,请参阅下面的 国际化部分

仅按钮模式

v2.7.0+

只想使用一个按钮来启动日期选择器对话框,或者想要提供你自己的可选文本输入字段?使用 button-only 属性将日期选择器渲染为下拉按钮。格式化的日期标签将使用类 sr-only 渲染(仅屏幕阅读器可用)。

在以下简单示例中,我们将日期选择器(仅按钮模式)放置为 <b-input-group> 的附加项,并且我们使用 context 事件来获取格式化的日期字符串和值

<template>
  <div>
    <label for="example-input">Choose a date</label>
    <b-input-group class="mb-3">
      <b-form-input
        id="example-input"
        v-model="value"
        type="text"
        placeholder="YYYY-MM-DD"
        autocomplete="off"
      ></b-form-input>
      <b-input-group-append>
        <b-form-datepicker
          v-model="value"
          button-only
          right
          locale="en-US"
          aria-controls="example-input"
          @context="onContext"
        ></b-form-datepicker>
      </b-input-group-append>
    </b-input-group>
    <p class="mb-1">Value: '{{ value }}'</p>
    <p class="mb-1">Selected: '{{ selected }}'</p>
    <p>Formatted: '{{ formatted }}'</p>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        value: '',
        formatted: '',
        selected: ''
      }
    },
    methods: {
      onContext(ctx) {
        // The date formatted in the locale, or the `label-no-date-selected` string
        this.formatted = ctx.selectedFormatted
        // The following will be an empty string until a valid date is entered
        this.selected = ctx.selectedYMD
      }
    }
  }
</script>

<!-- b-form-datepicker-button-only.vue -->

通过 size 属性控制按钮的大小,通过 button-variant 属性控制按钮变体。

日期字符串格式

v2.6.0+

若要更改组件内显示的日期文本的格式选项,例如在标题或占位符中,请将 date-format-options 属性设置为一个包含 Intl.DateTimeFormat 对象所需格式属性的对象(另请参见 国际化)。

<template>
  <div>
    <label for="datepicker-dateformat1">Custom date format</label>
    <b-form-datepicker
      id="datepicker-dateformat1"
      :date-format-options="{ year: 'numeric', month: 'short', day: '2-digit', weekday: 'short' }"
      locale="en"
    ></b-form-datepicker>

    <label class="mt-3" for="datepicker-dateformat2">Short date format</label>
    <b-form-datepicker
      id="datepicker-dateformat2"
      :date-format-options="{ year: 'numeric', month: 'numeric', day: 'numeric' }"
      locale="en"
    ></b-form-datepicker>
  </div>
</template>

<!-- b-form-datepicker-dateformat.vue -->

下表总结了每个格式属性的有效选项

属性 可能的值
year 'numeric''2-digit'
month 'numeric''2-digit''long''short''narrow'
day 'numeric''2-digit'
weekday 'long''short''narrow'

备注

  • 省略某些选项可能会影响格式化的文本字符串,例如 weekday
  • 格式化的值会根据解析的语言环境而有所不同。某些语言环境可能不支持 'narrow' 格式,并且会回退到 'short'long'(如果 'short' 不可用的情况下)
  • yearmonthday 始终会显示。如果你需要省略一个值,请将属性设置为 undefined,尽管出于可访问性原因,强烈不建议这样做

星期名称标题格式

2.12.0+

日历星期名称标题格式默认为 'short',通常是星期名称的三字符缩写,尽管某些 语言环境 可能会覆盖此设置。可以通过属性 weekday-header-format 来控制格式,并接受三个值之一

  • 'long' 完整的星期名称(例如 星期二)。在使用全宽日历时很方便。避免与默认日历宽度一起使用。
  • 'short' 通常是星期名称的 2 或 3 个字母缩写,具体取决于所选的语言环境(例如“周二”)。
  • 'narrow' 通常是单个字符缩写(例如 T)。对于某些语言环境,两个星期可能具有相同的窄样式(例如,星期二和星期四的窄样式都是 T)。对于不支持 'short' 格式的语言环境(例如语言环境 'ar''fa')来说,这很方便。

日期导航按钮插槽

2.12.0+

为了更改日历的日期导航按钮的内容,BootstrapVue 为每个按钮提供了作用域插槽

  • 'nav-prev-decade'
  • 'nav-prev-year'
  • 'nav-prev-month'
  • 'nav-this-month'(转到所选/今天按钮)
  • 'nav-next-month'
  • 'nav-next-year'
  • 'nav-next-decade'

所有七个插槽都有相同的范围属性

属性 类型 描述
isRTL 布尔值 当日期导航栏从右到左呈现时,将为 true

您可以使用 isRTL 范围属性来“翻转”上一个与下一个按钮的内容,以处理从左到右到从右到左的方向变化——即,当 isRTLtrue 时,上一年按钮将位于右侧,而不是左侧。

全宽日历下拉菜单

要创建全宽日历下拉菜单(其宽度与输入宽度匹配),只需将 menu-class 属性设置为 'w-100',并将 calendar-width 属性设置为 '100%'

<template>
  <div>
    <label for="datepicker-full-width">Choose a date</label>
    <b-form-datepicker
      id="datepicker-full-width"
      v-model="value"
      menu-class="w-100"
      calendar-width="100%"
      class="mb-2"
    ></b-form-datepicker>
    <p>Value: '{{ value }}'</p>
  </div>
</template>

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

<!-- b-form-datepicker-full-width.vue -->

国际化

日期选择器的日历国际化通过 Intl.DateTimeFormat 提供,但日历控件元素应用的标签除外(aria 标签、所选状态和帮助文本)。您必须为这些标签提供自己的翻译。可用的语言环境取决于浏览器(并非所有浏览器都支持所有语言环境)

默认情况下,<b-form-datepicker> 将使用浏览器的默认语言环境,但您可以通过 locale 属性指定要使用的语言环境(或语言环境)。该属性接受单个语言环境字符串或语言环境字符串数组(按首选语言环境列出)。

日历在星期日开始一周。可以通过将 start-weekday 属性设置为 06 范围内的数字来更改此设置,其中 0 表示星期日,1 表示星期一,直到 6 表示星期六。

<template>
  <div>
    <label for="example-locales">Locale:</label>
    <b-form-select id="example-locales" v-model="locale" :options="locales" class="mb-2"></b-form-select>

    <label for="example-weekdays">Start weekday:</label>
    <b-form-select id="example-weekdays" v-model="weekday" :options="weekdays" class="mb-2"></b-form-select>

    <div>
      <b-form-checkbox v-model="showDecadeNav" switch inline class="my-2">
        Show decade navigation buttons
      </b-form-checkbox>

      <b-form-checkbox v-model="hideHeader" switch inline class="my-2">
        Hide calendar header
      </b-form-checkbox>
    </div>

    <label for="example-i18n-picker">Date picker:</label>
    <b-form-datepicker
      id="example-i18n-picker"
      v-model="value"
      v-bind="labels[locale] || {}"
      :locale="locale"
      :start-weekday="weekday"
      :show-decade-nav="showDecadeNav"
      :hide-header="hideHeader"
      class="mb-2"
     ></b-form-datepicker>
     <p>Value: <b>'{{ value }}'</b></p>
   </div>
</template>

<script>
  export default {
    data() {
      return {
        value: '',
        locale: 'en-US',
        showDecadeNav: false,
        hideHeader: false,
        locales: [
          { value: 'en-US', text: 'English US (en-US)' },
          { value: 'de', text: 'German (de)' },
          { value: 'ar-EG', text: 'Arabic Egyptian (ar-EG)' },
          { value: 'zh', text: 'Chinese (zh)' }
        ],
        weekday: 0,
        weekdays: [
          { value: 0, text: 'Sunday' },
          { value: 1, text: 'Monday' },
          { value: 6, text: 'Saturday' }
        ],
        labels: {
          de: {
            labelPrevDecade: 'Vorheriges Jahrzehnt',
            labelPrevYear: 'Vorheriges Jahr',
            labelPrevMonth: 'Vorheriger Monat',
            labelCurrentMonth: 'Aktueller Monat',
            labelNextMonth: 'Nächster Monat',
            labelNextYear: 'Nächstes Jahr',
            labelNextDecade: 'Nächstes Jahrzehnt',
            labelToday: 'Heute',
            labelSelected: 'Ausgewähltes Datum',
            labelNoDateSelected: 'Kein Datum gewählt',
            labelCalendar: 'Kalender',
            labelNav: 'Kalendernavigation',
            labelHelp: 'Mit den Pfeiltasten durch den Kalender navigieren'
          },
          'ar-EG': {
            weekdayHeaderFormat: 'narrow',
            labelPrevDecade: 'العقد السابق',
            labelPrevYear: 'العام السابق',
            labelPrevMonth: 'الشهر السابق',
            labelCurrentMonth: 'الشهر الحالي',
            labelNextMonth: 'الشهر المقبل',
            labelNextYear: 'العام المقبل',
            labelNextDecade: 'العقد القادم',
            labelToday: 'اليوم',
            labelSelected: 'التاريخ المحدد',
            labelNoDateSelected: 'لم يتم اختيار تاريخ',
            labelCalendar: 'التقويم',
            labelNav: 'الملاحة التقويم',
            labelHelp: 'استخدم مفاتيح المؤشر للتنقل في التواريخ'
          },
          zh: {
            weekdayHeaderFormat: 'narrow',
            labelPrevDecade: '过去十年',
            labelPrevYear: '上一年',
            labelPrevMonth: '上个月',
            labelCurrentMonth: '当前月份',
            labelNextMonth: '下个月',
            labelNextYear: '明年',
            labelNextDecade: '下一个十年',
            labelToday: '今天',
            labelSelected: '选定日期',
            labelNoDateSelected: '未选择日期',
            labelCalendar: '日历',
            labelNav: '日历导航',
            labelHelp: '使用光标键浏览日期'
          }
        }
      }
    }
  }
</script>

<!-- b-form-datepicker-i18n.vue -->

您可以监听 context 事件来确定日历已解析到的语言环境和方向。

有关其他详细信息,请参阅 <b-calendar> 文档。

辅助功能

弹出日历支持与 <b-calendar> 相同的 键盘控制,以及以下内容

  • Esc 将关闭弹出日历,而不选择日期

在对日期选择器进行国际化时,重要的是还要使用适当的翻译字符串更新 label-* 道具,以便国际屏幕阅读器用户听到正确的提示和说明。

有关其他详细信息,请参阅 <b-calendar> 文档。

实现说明

<b-form-datepicker> 基于组件 <b-calendar><b-dropdown>

<b-form-datepicker> 使用 Bootstrap 的边框和 flex 实用程序类,以及按钮 (btn-*) 类、下拉 (dropdown*) 类和 form-control*(加上验证)类。BootstrapVue 的自定义 SCSS/CSS 也是日期选择器和日历正确样式所必需的。

另请参阅

组件参考

<b-form-datepicker>

v2.5.0+

组件别名

<b-form-datepicker> 还可以通过以下别名使用

  • <b-datepicker>

注意:仅在导入所有 BootstrapVue 或使用组件组插件时才可以使用组件别名。

属性

所有属性默认值均可 全局配置

属性
(单击按升序排序)
类型
(单击按升序排序)
默认值
描述
aria-controls
字符串如果此组件控制另一个组件或元素,请将其设置为受控组件或元素的 ID
boundary
HTMLElementString'scrollParent'菜单的边界约束:`'scrollParent'`, `'window'`, `'viewport'`, 或对 `HTMLElement` 的引用
button-only
v2.7.0+
布尔值false将日期选择器呈现为下拉按钮,而不是表单控件
button-variant
v2.7.0+
字符串'secondary'在 `button-only` 模式下使用的按钮变体。如果未设置 `button-only` 属性,则不起作用
calendar-width
v2.6.0+
字符串'270px'设置日历下拉菜单的宽度(有关详细信息,请参见 `b-calendar` 属性 `width`)
close-button
布尔值false设置后,显示可选的关闭按钮
close-button-variant
字符串'outline-secondary'用于可选 `close` 按钮的按钮变体
dark
布尔值false设置后,为弹出日历对话框提供深色背景
date-disabled-fn
函数设置为一个函数引用,如果日期已禁用,则返回 `true`,如果应启用日期,则返回 `false`。有关详细信息,请参见文档
date-format-options
v2.6.0+
对象{ 'year': 'numeric', 'month': 'long', 'day': 'numeric', 'weekday': 'long' }传递给 `Intl.DateTimeFormat` 的显示文本字符串的格式对象
date-info-fn
v2.12.0+
函数设置为一个函数引用,该引用返回一个类(字符串)或类(字符串数组)应用于日期单元格。有关详细信息,请参见日历文档。传递给子日历组件
direction
字符串设置为字符串 'rtl' 或 'ltr' 以明确强制日历以从右到左或从左到右(分别)模式呈现。默认为解析的语言环境的方向
disabled
布尔值false将日历置于非交互式禁用状态
dropleft
布尔值false设置后,将菜单置于按钮左侧
dropright
布尔值false设置后,将菜单置于按钮右侧
dropup
布尔值false设置后,将菜单置于按钮顶部
form
字符串表单控件所属的表单 ID。在控件上设置 `form` 属性
header-tag
字符串'header'指定要呈现的 HTML 标签,而不是标题的默认标签
hide-header
布尔值false当为 `true` 时,在视觉上隐藏选定的日期标题
id
字符串用于设置呈现内容的 `id` 属性,并用作根据需要生成任何其他元素 ID 的基础
initial-date
v2.7.0+
DateString当未指定 `value` 时,设置将呈现给用户的初始日历月份日期。接受 `YYYY-MM-DD` 格式的值或 `Date` 对象。默认为当前日期(如果当前日期超出范围,则为最小值或最大值)
label-calendar
字符串'Calendar'应用于日历网格的 `aria-label` 和 `role-description` 属性的值
label-close-button
字符串'Close'可选的 `Close` 按钮的内容
label-current-month
字符串'Current month'`Current Month` 导航按钮上的 `aria-label` 和 `title` 属性的值
label-help
字符串'Use cursor keys to navigate calendar dates'出现在日历网格底部的帮助文本
label-nav
字符串'Calendar navigation'日历导航按钮包装器上的 `aria-label` 属性的值
label-next-decade
v2.11.0+
字符串'Next decade'可选的 `Next Decade` 导航按钮上的 `aria-label` 和 `title` 属性的值
label-next-month
字符串'Next month'`Next Month` 导航按钮上的 `aria-label` 和 `title` 属性的值
label-next-year
字符串'Next year'`Next Year` 导航按钮上的 `aria-label` 和 `title` 属性的值
label-no-date-selected
字符串'No date selected'当前未选择任何日期时使用的标签
label-prev-decade
v2.11.0+
字符串'Previous decade'可选的 `Previous Decade` 导航按钮的 `aria-label` 和 `title` 属性值
label-prev-month
字符串'上个月'`Previous Month` 导航按钮的 `aria-label` 和 `title` 属性值
label-prev-year
字符串'上一年'`Previous Year` 导航按钮的 `aria-label` 和 `title` 属性值
label-reset-button
字符串'重置'可选的 `Reset` 按钮的内容
label-selected
字符串设置在已选日历网格日期按钮上的 `aria-label` 属性值
label-today
字符串'今天'日历网格日期按钮的 `aria-label` 属性值,表示该日期为今天的日期
label-today-button
字符串'选择今天'可选的 `Select today` 按钮的内容
locale
ArrayString日历使用的语言环境(或语言环境)。传递一个语言环境数组时,语言环境的顺序从最优到最差
max
DateString日历将显示的最大日期
menu-class
v2.6.0+
ArrayObjectString应用于弹出菜单包装器的类(或类)
min
DateString日历将显示的最小日期
name
字符串设置表单控件上 `name` 属性的值
nav-button-variant
v2.17.0+
字符串'secondary'用于导航按钮的主题颜色变体
no-close-on-select
布尔值false在单击/选择日期时禁用关闭弹出日期选择器
no-flip
布尔值false防止菜单自动翻转位置
no-highlight-today
布尔值false禁用日历中今天的日期突出显示
offset
NumberString0指定移动菜单的像素数。支持负值
placeholder
字符串在未选择日期时在表单控件中显示的文本。默认为 `label-no-date-selected` 属性值
popper-opts
对象{}传递给 Popper.js 的其他配置
readonly
布尔值false将日历置于交互式只读状态。禁用更新 v-model,同时仍允许日期导航
required
布尔值false设置后,在组件上添加 `aria-required="true"` 属性。必需的验证需要由您的应用程序处理
reset-button
布尔值false设置后,显示可选的 `reset` 按钮
reset-button-variant
字符串'outline-danger'用于可选的 `reset` 按钮的按钮变体
reset-value
DateString当单击可选的 `reset` 按钮时,所选日期将被设置为该值。默认情况下,清除所选值
right
布尔值false将菜单的右边缘与按钮的右侧对齐
selected-variant
字符串'primary'用于所选日期按钮的主题颜色变体
show-decade-nav
v2.11.0+
布尔值false当为 `true` 时,显示 +/- 十年导航按钮
size
字符串设置组件外观的大小。'sm'、'md'(默认)或 'lg'
start-weekday
NumberString0开始日历的星期。`0` 表示星期日,`1` 表示星期一,`6` 表示星期六,依此类推。
state
布尔值null控制组件的验证状态外观。`true` 表示有效,`false` 表示无效,`null` 表示无验证状态
today-button
布尔值false设置后,显示可选的 `select today` 按钮
today-button-variant
字符串'outline-primary'用于可选的 `select today` 按钮的按钮变体
today-variant
字符串用于突出显示今日日期按钮的主题颜色变体。默认为 `selectedVariant` 属性
value
v-model
DateString最初选定的日期值。接受 `YYYY-MM-DD` 字符串或 `Date` 对象
value-as-date
布尔值false为 v-model 返回 `Date` 对象,而不是 `YYYY-MM-DD` 字符串
weekday-header-format
v2.12.0+
字符串'short'用于日历星期标题的格式。可能的值为 `long`、`short`(默认)或 `narrow`

v-model

属性
事件
valueinput

插槽

名称
作用域
描述
button-content v2.6.0+放置在日期选择器图标按钮中的内容
nav-next-decade v2.12.0+用于在下一个十年导航按钮中放置自定义内容
nav-next-month v2.12.0+用于在下一个月导航按钮中放置自定义内容
nav-next-year v2.12.0+用于在下一年导航按钮中放置自定义内容
nav-prev-decade v2.12.0+用于在上一个十年导航按钮中放置自定义内容
nav-prev-month v2.12.0+用于在上个月导航按钮中放置自定义内容
nav-prev-year v2.12.0+用于在上一年导航按钮中放置自定义内容
nav-this-month v2.12.0+用于在本月/日导航按钮中放置自定义内容

事件

事件
参数
描述
context
  1. context - `b-calendar` 上下文对象。有关详细信息,请参阅 `b-calendar` 文档
`b-calendar` 上下文事件。当用户通过日期导航按钮或光标控制更改活动日期时发出
hidden v2.9.0+当选择器弹出窗口隐藏时发出
input
  1. date - `YYYY-MM-DD` 格式的字符串或 `Date` 对象(如果 `value-as-date` 属性为 `true`)
更新 v-model 时发出
shown v2.9.0+当选择器弹出窗口显示时发出

导入单个组件

您可以通过以下命名导出将单个组件导入到您的项目中

组件
命名导出
导入路径
<b-form-datepicker>BFormDatepickerbootstrap-vue

示例

import { BFormDatepicker } from 'bootstrap-vue'
Vue.component('b-form-datepicker', BFormDatepicker)

作为 Vue.js 插件导入

此插件包含上面列出的所有各个组件。插件还包括任何组件别名。

命名导出
导入路径
FormDatepickerPluginbootstrap-vue

示例

import { FormDatepickerPlugin } from 'bootstrap-vue'
Vue.use(FormDatepickerPlugin)