We use cookies to ensure you have the best browsing experience on our website. Please read our cookie policy for more information about how we use cookies.
Adjusted the time to pass test as the date is old.
importReact,{useState}from"react";functionEmployeeValidationForm(){//Here I wanted to keep all the value and if an error as a boolean to render easier and more accessibleconstinitState={name:{value:"",isValid:false},email:{value:"",isValid:false},employeeId:{value:"",isValid:false},joiningDate:{value:"",isValid:false}}const[formFields,setFormFields]=useState(initState);//All the errors constisShort=(input)=>input.trim().length<4;constisAlpha=(input)=>(/^[A-Za-z\s]+$/).test(input);constisEmail=(input)=>/^[^\s@]+@[^\s@]+\.[^\s@]+$/.test(input)?true:false;constisSixDigits=(input)=>/^[0-9]{6}$/.test(input)?true:false;constisFutureDate=(input)=>newDate(input)<=newDate("2025-01-01")?true:false;constvalidateField=(name,value)=>{switch(name){case"name":return!isShort(value)&&isAlpha(value);case"email":returnisEmail(value);case"employeeId":returnisSixDigits(value)case"joiningDate":returnisFutureDate(value)default:returnfalse}};consthandleNameInput=(e)=>{const{name,value}=e.target;constisValid=validateField(name,value);setFormFields((prev)=>({...prev,[name]:{value,isValid}}));}//Check that fields are not empty and that isValid is trueconstisFormValid=Object.values(formFields).every((field)=>field.value.trim()!==""&&field.isValid);consthandleSubmit=()=>{setFormFields(initState)}return(<divclassName="layout-column align-items-center mt-20 "><divclassName="layout-column align-items-start mb-10 w-50"data-testid="input-name"><inputclassName="w-100"type="text"name="name"placeholder="Name"value={formFields.name.value}onChange={handleNameInput}/>{!formFields.name.isValid&&<pclassName="error mt-2">Namemustbeatleast4characterslongandonlycontainlettersandspaces</p>}</div><divclassName="layout-column align-items-start mb-10 w-50"data-testid="input-email"><inputclassName="w-100"type="email"name="email"value={formFields.email.value}placeholder="Email"onChange={handleNameInput}/>{!formFields.email.isValid&&<pclassName="error mt-2">Emailmustbeavalidemailaddress</p>}</div><divclassName="layout-column align-items-start mb-10 w-50"data-testid="input-employee-id"><inputclassName="w-100"type="text"name="employeeId"value={formFields.employeeId.value}placeholder="Employee ID"onChange={handleNameInput}/>{!formFields.employeeId.isValid&&<pclassName="error mt-2">EmployeeIDmustbeexactly6digits</p>}</div><divclassName="layout-column align-items-start mb-10 w-50"data-testid="input-joining-date"><inputclassName="w-100"type="date"name="joiningDate"value={formFields.joiningDate.value}placeholder="Joining Date"onChange={handleNameInput}/>{!formFields.joiningDate.isValid&&<pclassName="error mt-2">JoiningDatecannotbeinthefuture</p>}</div><buttondata-testid="submit-btn"type="submit"disabled={!isFormValid}onClick={handleSubmit}>Submit</button></div>);}exportdefaultEmployeeValidationForm;
Cookie support is required to access HackerRank
Seems like cookies are disabled on this browser, please enable them to open this website
Employee Validation
You are viewing a single comment's thread. Return to all comments →
Adjusted the time to pass test as the date is old.