different form examples
This commit is contained in:
@@ -40,3 +40,8 @@
|
||||
.read-the-docs {
|
||||
color: #888;
|
||||
}
|
||||
|
||||
input[type="text"] {
|
||||
border-radius: 6px;
|
||||
padding: 1rem 0.5rem;
|
||||
}
|
||||
|
||||
@@ -0,0 +1,69 @@
|
||||
import { FormEvent, useRef, useState } from "react";
|
||||
|
||||
export default function RefExercise(): React.ReactElement {
|
||||
console.log("RefExercise rendered");
|
||||
|
||||
const emailRef = useRef<HTMLInputElement>(null);
|
||||
const passwordRef = useRef<HTMLInputElement>(null);
|
||||
|
||||
const handleSubmit = () => {
|
||||
console.log("submit", {
|
||||
email: emailRef.current?.value,
|
||||
password: passwordRef.current?.value
|
||||
});
|
||||
passwordRef.current?.focus();
|
||||
}
|
||||
|
||||
const [formData, setFormData] = useState({
|
||||
strasse: "",
|
||||
city: ""
|
||||
});
|
||||
|
||||
const handleChange = (event: React.ChangeEvent<HTMLInputElement>) => {
|
||||
setFormData({
|
||||
...formData,
|
||||
[event.target.name]: event.target.value
|
||||
});
|
||||
}
|
||||
|
||||
const handleChangeSubmit = () => {
|
||||
const strasse = document.querySelector('input[name="strasse"]') as HTMLInputElement;
|
||||
const city = document.querySelector('input[name="city"]') as HTMLInputElement;
|
||||
console.log("submit", {
|
||||
strasse: strasse.value,
|
||||
city: city.value
|
||||
});
|
||||
}
|
||||
|
||||
function handleFormSubmit(e: FormEvent) {
|
||||
e.preventDefault();
|
||||
const data = new FormData(e.target as HTMLFormElement);
|
||||
console.log('handleFormSubmit', {
|
||||
email: data.get('email'),
|
||||
password: data.get('password')
|
||||
});
|
||||
}
|
||||
return (
|
||||
<div style={{ display: "flex", flexDirection: "column", gap: "3rem" }}>
|
||||
<div style={{ display: "flex", flexDirection: "column", gap: "1rem" }}>
|
||||
<h3>values by ref</h3>
|
||||
<input type="text" placeholder="email" ref={emailRef}/>
|
||||
<input type="text" placeholder="password" ref={passwordRef}/>
|
||||
<button onClick={handleSubmit}>Submit</button>
|
||||
</div>
|
||||
<div style={{ display: "flex", flexDirection: "column", gap: "1rem" }}>
|
||||
<h3>change event (bad way, but validation is possible)</h3>
|
||||
<input type="text" name="strasse" placeholder="Strasse" onChange={handleChange} />
|
||||
<input type="text" name="city" placeholder="Stadt" onChange={handleChange}/>
|
||||
<button onClick={handleChangeSubmit}>submit</button>
|
||||
|
||||
</div>
|
||||
<form onSubmit={handleFormSubmit} style={{ display: "flex", flexDirection: "column", gap: "1rem" }}>
|
||||
<h3>By Form Event</h3>
|
||||
<input type="text" name="email" placeholder="Email" />
|
||||
<input type="text" name="password" placeholder="password" />
|
||||
<button type="submit">Send</button>
|
||||
</form>
|
||||
</div>
|
||||
);
|
||||
}
|
||||
Reference in New Issue
Block a user