第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問(wèn)題,去搜搜看,總會(huì)有你想問(wèn)的

Formik & Yup:如何驗(yàn)證提供的日期是否為 18 歲?

Formik & Yup:如何驗(yàn)證提供的日期是否為 18 歲?

蝴蝶刀刀 2023-05-25 18:15:42
我正在處理一個(gè)由 Formik、Yup 和 ReactJS 制作的表單。在日期字段中,我試圖驗(yàn)證用戶是否年滿 18 歲。我在 Formik 中通過(guò)了以下作為 validationSchema 參數(shù):import differenceInYears from "date-fns/differenceInYears";.........    dob: Yup.date()              .nullable()              .test("dob", "Should be greater than 18", function (value) {                return differenceInYears(value, new Date()) >= 18;              }),formik 輸入字段的名稱是dob. 但即使我輸入 18 歲的有效日期,它也會(huì)顯示驗(yàn)證錯(cuò)誤。那么,如何正確驗(yàn)證它呢?
查看完整描述

3 回答

?
牧羊人nacy

TA貢獻(xiàn)1862條經(jīng)驗(yàn) 獲得超7個(gè)贊

您需要交換日期參數(shù):

differenceInYears(new?Date(),?new?Date(value))?>=?18;

如果您檢查 date-fns,第一個(gè)參數(shù)應(yīng)該是較晚的日期。

您還需要將字段值解析為Date.


查看完整回答
反對(duì) 回復(fù) 2023-05-25
?
蕪湖不蕪

TA貢獻(xiàn)1796條經(jīng)驗(yàn) 獲得超7個(gè)贊

因此,如果您想在不添加 date-fns 插件的情況下執(zhí)行此操作并且不想使用 mgic 天數(shù),那么您可以執(zhí)行類似的操作。


dob: Yup.date().nullable()

        .test('dob', 'Should be greater than 18', function (value, ctx) {

          const dob = new Date(value);

          const validDate = new Date();

          const valid = validDate.getFullYear() - dob.getFullYear() >= 18;

          return !valid ? ctx.createError() : valid; 

        })

        .required('Required'),


查看完整回答
反對(duì) 回復(fù) 2023-05-25
?
慕尼黑的夜晚無(wú)繁華

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊

我的解決方案:



import React from "react";

import { Formik, Form, Field } from "formik";

import * as Yup from "yup";

import s from "./Registration.module.css";


const SignupSchema = Yup.object().shape({

  firstName: Yup.string().required("Required"),

  lastName: Yup.string().required("Required"),

  birthdate: Yup.date()

    .max(new Date(Date.now() - 567648000000), "You must be at least 18 years")

    .required("Required"),

  password: Yup.string()

    .min(4, "Too Short!")

    .max(50, "Too Long!")

    .required("Required"),

  email: Yup.string().email("Invalid email").required("Required"),

});


export const RegistrationForm = () => (

  <div className={s.mainLoginForm}>

    <h1>Sign up</h1>

    <Formik

      initialValues={{

        firstName: "",

        lastName: "",

        email: "",

        password: "",

        birthdate: "",

      }}

      validationSchema={SignupSchema}

      onSubmit={(values) => {

        // same shape as initial values

        console.log(values);

      }}

    >

      {({ errors, touched }) => (

        <Form>

          <div className={s.inputsFlex}>

            <Field

              className={s.regInput}

              placeholder="email"

              name="email"

              type="email"

            />

            {errors.email && touched.email ? (

              <div className={s.formControl}>{errors.email}</div>

            ) : null}

            <Field

              className={s.regInput}

              placeholder="password"

              name="password"

              type="password"

            />

            {errors.password && touched.password ? (

              <div className={s.formControl}>{errors.password}</div>

            ) : null}

            <Field

              className={s.regInput}

              placeholder="firstName"

              name="firstName"

            />

            {errors.firstName && touched.firstName ? (

              <div className={s.formControl}>{errors.firstName}</div>

            ) : null}

            <Field

              className={s.regInput}

              placeholder="lastName"

              name="lastName"

            />

            {errors.lastName && touched.lastName ? (

              <div className={s.formControl}>{errors.lastName}</div>

            ) : null}

            <Field className={s.regInput} name="birthdate" type="date" />

            {errors.birthdate && touched.birthdate ? (

              <div className={s.formControl}>{errors.birthdate}</div>

            ) : null}

            <button className={s.regBtn} type="submit">

              Sign up

            </button>

          </div>

        </Form>

      )}

    </Formik>

  </div>

);



您可以為閏年(閏年)添加 4 天 86 400 000 * 4 = 345 600 000


查看完整回答
反對(duì) 回復(fù) 2023-05-25
  • 3 回答
  • 0 關(guān)注
  • 208 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)