我正在尝试设置一个React表单,并为日、月和年设置一个数字输入字段(刚开始编写代码),我希望限制日的最大输入值以表示月中的天数。
我试过使用if语句,它产生了正确的结果,我认为如果在修改月份值之后调用if语句,它会拉取数据,并在提交表单时踢出一个html5错误,但这不起作用。
import { useState } from "react";
import { useCookies } from 'react-cookie'
import { useNavigate } from "react-router-dom";
import axios from "axios";
const handleChange = (e) => {
const value =
e.target.type === "checkbox" ? e.target.checked : e.target.value;
const name = e.target.name;
const maxDayInMonth = (month, year) =>{
if(month === 2 && year % 4 !== 0){
setMaxDay = 28
} else if(month === 2 && year % 4 === 0){
return 29
} else if(month === 4 || month === 6 || month === 9 || month === 11){
return 30
} else {
return 31
}
}
const minYear = new Date().getFullYear() - 100
const maxYear = new Date().getFullYear() - 18
return (
<>
<input
id="dob_day"
type="number"
name="dob_day"
placeholder="DD"
min = "1"
max = {maxDayInMonth(formData.dob_month, formData.dob_year)}
required={true}
value={formData.dob_day}
onChange={handleChange}
/>
<input
id="dob_month"
type="number"
name="dob_month"
placeholder="MM"
min = "1"
max = "12"
required={true}
value={formData.dob_month}
onChange={handleChange}
/>
<input
id="dob_year"
type="number"
name="dob_year"
placeholder="YYYY"
min = {minYear}
max = {maxYear}
required={true}
value={formData.dob_year}
onChange={handleChange}
/>
</>
)
为了让它成功我还有什么没做的?
我只是想,也许我应该使用useState,因为用户输入会导致修改,但既然我输入了这个,我就要问一下,以防我错了。
1条答案
按热度按时间rqcrx0a61#
然后用这个函数替换handleChange:
在您的输入中: