J'utilise deux v-time-pickers dans mon projet vuetify. Je veux valider mes time-pickers qu'il sera impossible de choisir le second time-picker plus tôt que le premier time-picker.

Par exemple, lorsque l'utilisateur choisira l'heure au premier sélecteur : 9h, au deuxième sélecteur, il sera impossible de choisir des heures avant 9h et les heures ne seront activées qu'à partir de 10h.

https://vuetifyjs.com/en/components/time-pickers/#dialog-and-menu

Code:

Sélecteurs.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



0
xyz 16 nov. 2020 à 19:04

1 réponse

Meilleure réponse

Vous pouvez tirer parti des accessoires d'heures et de minutes autorisés à partir du composant v-time-picker :

<v-time-picker
      v-if="modal2"
      v-model="time"
      :allowed-hours="allowedHours"
      :allowed-minutes="allowedMinutes"
      full-width
    >

Et personnalisez votre logique dans votre script :

methods: {
      allowedHours: v => v % 2,
      allowedMinutes: v => v >= 10 && v <= 50
    },
1
jcoleau 16 nov. 2020 à 20:25