Vue сформулировать проверку выбора даты

#vue.js #validation #vue-formulate

#vue.js #проверка #vue-сформулировать

Вопрос:

Я использую библиотеку Vue Formulate (которая потрясающая).

Мне нужно, чтобы пользователь мог выбирать дату только с сегодняшнего дня (включительно) и далее.

Я использую значение «после» по умолчанию для проверки, но сегодня (текущая дата) недействительна. Другими словами, проверка запускается при выборе сегодняшней даты, и форма не может быть отправлена.

Каков наилучший способ обойти это?

https://codesandbox.io/s/vue-formulate-reproduction-template-forked-kmpgq ?размер шрифта = 14, скрытая навигация = 1, тема = темная

Ответ №1:

Небольшое обходное решение, присвоив атрибуту after значение даты до сегодняшнего дня:

 <template>
  <FormulateInput
    name="date"
    label="Date:"
    :validation="
      'bail|required|after:'   new Date(Date.now() - 24 * 60 * 60 * 1000)
    "
    :validation-messages="{ after: 'The date has to be today or later' }"
    type="date"
  />
</template>
 

https://codesandbox.io/s/vue-formulate-reproduction-template-forked-ky1hu?fontsize=14amp;hidenavigation=1amp;theme=dark

РЕДАКТИРОВАТЬ: на самом деле вы можете сделать это также с помощью вычисляемого свойства, вернув дату до сегодняшнего дня.

Комментарии:

1. Спасибо! Да, я собираюсь использовать вычисляемое свойство.

Ответ №2:

После проверки должна быть определена дата. Вот решение путем вычисления сегодняшнего дня с помощью вычисляемого свойства. Codesandbox

 <template>
  <FormulateInput
    name="date"
    label="Date:"
    :validation="'bail|required|after:'   today"
    :validation-messages="{ after: 'The date has to be today or later' }"
    type="date"
  />
</template>

<script>
export default {
  computed: {
    today() {
      return new Date().toLocaleDateString();
    },
  },
};
</script>
 

Комментарии:

1. Большое спасибо! Я думал, что это будет что-то вроде этого.