Как предотвратить ввод неправильных дат в react-admins dateInput?

#react-native #material-ui #react-admin

#реагировать-родной #материал-пользовательский интерфейс #react-admin

Вопрос:

Как запретить пользователю вручную вводить неправильные даты, например, 30 февраля 2020 года?

введите описание изображения здесь

 import { DateInput } from "react-admin";
const validateDate = (value) => {
        console.debug('value of the date is ',value);
        // In case of wrong date like 30.Feb.2020 the value is empty, so no chance to validate the correctness.
    if(isCorrect(value)){
        return undefined
    }
    return 'error'
};


<DateInput validate={[validateDate]} source={'myDate'}></DateInput>
 

Я пытаюсь проверить дату, но в случае неправильной даты она просто пуста (не определена), поэтому нет возможности проверить или отличить пустую или неправильную дату.

Как предотвратить ввод пользователем неправильных дат?

Ответ №1:

Вы можете использовать модуль для проверки даты. например, используя моменты

 const isValidDate = (toTest) => moment(toTest, "D/M/YY", true).isValid()
 

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

1. Моя проблема не в самой проверке. Как я уже говорил, значение (в вашем случае toTest) является пустым, если дата введена как 02/30/2020. Значение не заполнено, так как я могу проверить?

2. Извини, что я это пропустил. Не могли бы вы добавить оператор импорта для DateInput . Некоторые модули будут проверять входные данные для вас, и, похоже, это имеет место здесь, но вы должны убедиться в документах

3. Я добавил оператор импорта в вопрос. dateInput получен из React-Amin. Я ничего не нашел в документах.

4. вы можете ознакомиться с кодом здесь github.com/marmelab/react-admin/blob/master/packages / … . похоже, что модуль преобразует введенные вами данные в объект date в строке 45, и у меня такое чувство, что если дата недействительна, она завершится ошибкой, и вы ничего не получите. Я не тестировал его, поэтому вам следует. Если это так, вам не нужно проверять дату