#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, и у меня такое чувство, что если дата недействительна, она завершится ошибкой, и вы ничего не получите. Я не тестировал его, поэтому вам следует. Если это так, вам не нужно проверять дату