在 vuetify 中,如何验证 v-time-pickers
In vuetify, how to validate v-time-pickers
我在我的 vuetify 项目中使用了两个 v-time-pickers。我想验证我的时间选择器,它不可能比第一次选择器更早地选择第二次选择器。
例如,在第一个时间选择器上,用户将选择时间:上午 9 点,在第二个选择器上,将无法选择上午 9 点之前的时间,并且只能从上午 10 点开始启用。
https://vuetifyjs.com/en/components/time-pickers/#dialog-and-menu
代码:
pickers.js
<v-menu
ref="menu"
v-model="menu2"
:close-on-content-click="false"
:nudge-right="40"
:return-value.sync="time"
lazy
transition="scale-transition"
offset-y
full-width
max-width="290px"
min-width="290px"
>
<template v-slot:activator="{ on }">
<v-text-field
v-model="time"
label="Picker in menu"
prepend-icon="access_time"
readonly
v-on="on"
></v-text-field>
</template>
<v-time-picker
v-if="menu2"
v-model="time"
full-width
@click:minute="$refs.menu.save(time)"
></v-time-picker>
</v-menu>
</v-flex>
<v-spacer></v-spacer>
<v-flex xs11 sm5>
<v-dialog
ref="dialog"
v-model="modal2"
:return-value.sync="time"
persistent
lazy
full-width
width="290px"
>
<template v-slot:activator="{ on }">
<v-text-field
v-model="time"
label="Picker in dialog"
prepend-icon="access_time"
readonly
v-on="on"
></v-text-field>
</template>
<v-time-picker
v-if="modal2"
v-model="time"
full-width
>
<v-spacer></v-spacer>
<v-btn flat color="primary" @click="modal2 = false">Cancel</v-btn>
<v-btn flat color="primary" @click="$refs.dialog.save(time)">OK</v-btn>
</v-time-picker>
</v-dialog>
script.js
<script>
export default {
data () {
return {
time: null,
menu2: false,
modal2: false
}
}
}
</script>
content_copy
您可以利用 v-time-picker 组件中的 allowed-hours 和 minutes 属性:
<v-time-picker
v-if="modal2"
v-model="time"
:allowed-hours="allowedHours"
:allowed-minutes="allowedMinutes"
full-width
>
并在脚本中自定义您的逻辑:
methods: {
allowedHours: v => v % 2,
allowedMinutes: v => v >= 10 && v <= 50
},
我在我的 vuetify 项目中使用了两个 v-time-pickers。我想验证我的时间选择器,它不可能比第一次选择器更早地选择第二次选择器。
例如,在第一个时间选择器上,用户将选择时间:上午 9 点,在第二个选择器上,将无法选择上午 9 点之前的时间,并且只能从上午 10 点开始启用。
https://vuetifyjs.com/en/components/time-pickers/#dialog-and-menu
代码:
pickers.js
<v-menu
ref="menu"
v-model="menu2"
:close-on-content-click="false"
:nudge-right="40"
:return-value.sync="time"
lazy
transition="scale-transition"
offset-y
full-width
max-width="290px"
min-width="290px"
>
<template v-slot:activator="{ on }">
<v-text-field
v-model="time"
label="Picker in menu"
prepend-icon="access_time"
readonly
v-on="on"
></v-text-field>
</template>
<v-time-picker
v-if="menu2"
v-model="time"
full-width
@click:minute="$refs.menu.save(time)"
></v-time-picker>
</v-menu>
</v-flex>
<v-spacer></v-spacer>
<v-flex xs11 sm5>
<v-dialog
ref="dialog"
v-model="modal2"
:return-value.sync="time"
persistent
lazy
full-width
width="290px"
>
<template v-slot:activator="{ on }">
<v-text-field
v-model="time"
label="Picker in dialog"
prepend-icon="access_time"
readonly
v-on="on"
></v-text-field>
</template>
<v-time-picker
v-if="modal2"
v-model="time"
full-width
>
<v-spacer></v-spacer>
<v-btn flat color="primary" @click="modal2 = false">Cancel</v-btn>
<v-btn flat color="primary" @click="$refs.dialog.save(time)">OK</v-btn>
</v-time-picker>
</v-dialog>
script.js
<script>
export default {
data () {
return {
time: null,
menu2: false,
modal2: false
}
}
}
</script>
content_copy
您可以利用 v-time-picker 组件中的 allowed-hours 和 minutes 属性:
<v-time-picker
v-if="modal2"
v-model="time"
:allowed-hours="allowedHours"
:allowed-minutes="allowedMinutes"
full-width
>
并在脚本中自定义您的逻辑:
methods: {
allowedHours: v => v % 2,
allowedMinutes: v => v >= 10 && v <= 50
},