import
'./FormHandling.css'
;
import { useState } from
'react'
;
function
FormHandling() {
const [Data, setData] = useState({
username:
''
,
email:
''
,
occupation:
''
,
gender:
''
,
languages: [],
})
const handleChange = (e) => {
if
(e.target.name ===
'languages'
) {
let copy = { ...Data }
if
(e.target.checked) {
copy.languages.push(e.target.value)
}
else
{
copy.languages = copy.languages.filter(el => el !== e.target.value)
}
setData(copy)
}
else
{
setData(() => ({
...Data,
[e.target.name]: e.target.value
}))
}
}
const handleSubmit = (e) => {
e.preventDefault()
console.log(
"form submitted: "
, Data)
}
return
(
<div className=
"form-container"
>
<form onSubmit={handleSubmit}>
<div className=
"form-group"
>
<label htmlFor=
"username"
className=
"form-label"
>User Name</label>
<input className=
"form-control"
placeholder=
"Enter the username"
name=
"username"
onChange={handleChange}
value={Data.username} />
</div>
<div className=
"form-group"
>
<label htmlFor=
"email"
className=
"form-label"
>Email</label>
<input className=
"form-control"
placeholder=
"Enter the email"
name=
"email"
onChange={handleChange}
value={Data.email} />
</div>
<div className=
"form-group"
>
<label htmlFor=
"occupation"
className=
"form-label"
>Occupation</label>
<select className=
"form-select"
name=
"occupation"
onChange={handleChange}
value={Data.occupation}
>
<option>--select--</option>
<option value=
"student"
>Student</option>
<option value=
"employee"
>Employee</option>
<option value=
"other"
>Other</option>
</select>
</div>
<div className=
"form-group"
>
<label htmlFor=
"gender"
className=
"form-label"
>Gender</label>
<div className=
"radio-group"
>
<div>
<input type=
"radio"
name=
"gender"
value=
"male"
onChange={handleChange}
checked={Data.gender ===
'male'
} />
<label htmlFor=
"male"
>Male</label>
</div>
<div>
<input type=
"radio"
name=
"gender"
value=
"female"
onChange={handleChange}
checked={Data.gender ===
'female'
} />
<label htmlFor=
"female"
>Female</label>
</div>
<div>
<input type=
"radio"
name=
"gender"
value=
"other"
onChange={handleChange}
checked={Data.gender ===
'other'
} />
<label htmlFor=
"other"
>Other</label>
</div>
</div>
</div>
<div className=
"form-group"
>
<label htmlFor=
"gender"
className=
"form-label"
>Languages</label>
<div>
<div>
<input type=
"checkbox"
name=
"languages"
value=
"html"
onChange={handleChange}
checked={Data.languages.indexOf(
'html'
) !== -1} />
<label htmlFor=
"html"
>HTML</label>
</div>
<div>
<input type=
"checkbox"
name=
"languages"
value=
"css"
onChange={handleChange}
checked={Data.languages.indexOf(
'css'
) !== -1} />
<label htmlFor=
"css"
>CSS</label>
</div>
<div>
<input type=
"checkbox"
name=
"languages"
value=
"javascript"
onChange={handleChange}
checked={Data.languages.indexOf(
'javascript'
) !== -1} />
<label htmlFor=
"javascript"
>Javascript</label>
</div>
</div>
</div>
<div className=
"form-group"
>
<button className=
"btn"
type=
"submit"
>Submit</button>
</div>
</form>
</div>
);
}
export
default
FormHandling;