Employee Validation

  • + 0 comments

    import React, { useEffect, useState } from "react";

    function EmployeeValidationForm() { const [form, setForm] = useState({ name: "", email: "", employeeId: "", joiningDate: "" }) const [errors, setErrors] = useState({ isNameError: true, isEmailError: true, isEmployeeIdError: true, isDateError: true }); const [isButtonDisabled, setIsButtonDisabled] = useState(false); const [touched, setTouched] = useState({ name: false, email: false, employeeId: false, joiningDate: false });

    useEffect(() => { if (Object.values(form).some(val => val === "" || val === null || val === undefined)) { setIsButtonDisabled(true) } else if (Object.values(errors).some(error => error === true)) { setIsButtonDisabled(true) } else { setIsButtonDisabled(false) } }, [form, errors])

    const handleOnChange = (e) => { setForm({ ...form, [e.target.name]: e.target.value })

    if (e.target.name === "name") {
      if (!/^[A-Za-z\s]+$/.test(e.target.value)) {
        setErrors({ ...errors, isNameError: true })
      } else {
        setErrors({ ...errors, isNameError: false })
      }
    }
    
    if (e.target.name === "email") {
      if (!/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(e.target.value)) {
        setErrors({ ...errors, isEmailError: true })
      } else {
        setErrors({ ...errors, isEmailError: false })
      }
    }
    
    if (e.target.name === "employeeId") {
      if (e.target.value.length !== 6) {
        setErrors({ ...errors, isEmployeeIdError: true })
      } else {
        setErrors({ ...errors, isEmployeeIdError: false })
      }
    }
    
    if (e.target.name === "joiningDate") {
      if (new Date(e.target.value) > new Date()) {
        setErrors({ ...errors, isDateError: true })
      } else {
        setErrors({ ...errors, isDateError: false })
      }
    }
    

    }

    const handleOnSubmit = () => { setForm({ name: "", email: "", employeeId: "", joiningDate: "" }) setErrors({ isNameError: true, isEmailError: true, isEmployeeIdError: true, isDateError: true }) }

    const handleBlur = (e) => { setTouched({ ...touched, [e.target.name]: true }); };

    return ( {errors.isNameError && Name must be at least 4 characters long and only contain letters and spaces

    } {errors.isEmailError && Email must be a valid email address

    } {errors.isEmployeeIdError && Employee ID must be exactly 6 digits

    } {errors.isDateError && Joining Date cannot be in the future

    } Submit ); }

    export default EmployeeValidationForm;