如何使用Formik和Yup验证“输入类型='日期'”

如何解决如何使用Formik和Yup验证“输入类型='日期'”

我从React开始,现在我面临着表单验证的挑战,为此,我寻找Formik和Yup库来寻找进行验证的方法 但是事实证明,没有如何验证“输入类型='日期'”的示例,我仅看到示例使用“ DatePicker”的示例,请问是否有任何方法可以使用以下方法解决此问题: “输入类型='日期' 然后,我将向您展示如何尝试验证此日期。

    const validationSchema = Yup.object().shape({
      name: Yup.string()
      .min(2,"El nombre debe contener mas de 2 caracteres")
      .max(60,"El nombre no debe exceder de los 60 caracteres")
      .required("*El nombre es requerido"),inicio: Yup.date()
      .min(Yup.ref('originalEndDate'),({ min }) => `Date needs to be before ${formatDate(min)}!!`,)
    });
    function formatDate(date) {
      return new Date(date).toLocaleDateString()
     }

 <Formik initialValues={{ name:"",inicio:""}} validationSchema={validationSchema}>
                {( {values,errors,touched,handleChange,handleBlur,handleSubmit,isSubmitting }) => (
                        <Form.Group>
                            <Form.Row>
                                <Form.Label column="sm" lg={1}>
                                        Creada Por:
                                </Form.Label>
                            </Form.Row>
                            <Form.Row className="col-form-label">
                                <Form.Label column="sm" lg={1}>
                                Nombre:
                                </Form.Label>
                                <Col>
                                    <div class="col-10">
                                        <Form.Control type="text" defaultValue={values.name} name="name" placeholder="Nombre de campaña"
                                            onChange={handleChange}
                                            onBlur={handleBlur}
                                            className={touched.name && errors.name ? "error":null}/>
                                        {/* Applies the proper error message from validateSchema when the user has clicked the element and there is an error,also applies the .error-message CSS class for styling */}
                                        {touched.name && errors.name ? (
                                                <div className="error-message">{errors.name}</div>
                                            ): null
                                        }
                                    </div>
                                </Col> 
                            </Form.Row>
                            <Form.Row>
                                <Form.Label column="sm" lg={1}>
                                Inicio:
                                </Form.Label>
                                <Col>
                                    <div className="col-10">
                                        <Form.Control type="date" placeholder="" defaultValue={values.inicio}
                                        onChange={handleChange}
                                        onBlur={handleBlur}
                                        className={touched.inicio && errors.inicio ? "error":null}
                                            />
                                    </div>
                                </Col>
                                <Form.Label column="sm" lg={1}>
                                Fin:
                                </Form.Label>
                                <Col>
                                    <div className="col-10">
                                        <Form.Control type="date" placeholder="2011-08-19"
                                                />
                                    </div>
                                </Col>
                            </Form.Row>
                            <h5>Indique el objetivo a cumplir para esta campaña</h5>
                            <Container>
                                <Form.Check required label="Incrementar volumen de ventas"/>
                                <Form.Check required label="Incrementar repetición de venta"/>
                                <Form.Check required label="Mejorar lealtad"/>
                                <Form.Check required label="Crear awearness"/>
                                <Form.Check required label="Acción correctiva"/>
                            </Container>
                            <Container>
                                <Button as="input" type="button" value="regresar" />{' '}
                                <Button as="input" variant="primary" type="submit" value="Crear campaña"/>
                            </Container>
                        </Form.Group>
                    )}
                </Formik>

我正在寻找解决方案,如果存在的话

解决方法

使用变换:

import { date,object } from "yup";

const today = new Date();

const schema = object({
  birthday: date().transform(parseDateString).max(today),});

const isValid = schema.validateSync({
  birthday: "2020-02-02",});

参考:https://codedaily.io/tutorials/175/Yup-Date-Validation-with-Custom-Transform

是的:https://github.com/jquense/yup#mixedtransformcurrentvalue-any-originalvalue-any--any-schema

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?