// Filename - App.js file import React, { useState, useEffect } from 'react'; const App = () => { const [name, setName] = useState(''); const [email, setEmail] = useState(''); const [password, setPassword] = useState(''); const [errors, setErrors] = useState({}); const [isFormValid, setIsFormValid] = useState(false); useEffect(() => { validateForm(); }, [name, email, password]); // Validate form const validateForm = () => { let errors = {}; if (!name) { errors.name = 'Name is required.'; } if (!email) { errors.email = 'Email is required.'; } else if (!/\S+@\S+\.\S+/.test(email)) { errors.email = 'Email is invalid.'; } if (!password) { errors.password = 'Password is required.'; } else if (password.length < 6) { errors.password = 'Password must be at least 6 characters.'; } setErrors(errors); setIsFormValid(Object.keys(errors).length === 0); }; // Submit const handleSubmit = () => { if (isFormValid) { console.log('Form submitted successfully!'); } else { console.log('Form has errors. Please correct them.'); } }; return ( <div style={styles.container}> <div style={styles.form}> <h1 style={styles.heading}> Geeksforgeeks || Form Validation In Next.js </h1> <h3 style={styles.subHeading}>Login Page</h3> <input style={styles.input} placeholder="Name" value={name} onChange={(e) => setName(e.target.value)} /> {errors.name && <p style={styles.error}>{errors.name}</p>} <input style={styles.input} placeholder="Email" value={email} onChange={(e) => setEmail(e.target.value)} /> {errors.email && <p style={styles.error}>{errors.email}</p>} <input style={styles.input} placeholder="Password" value={password} onChange={(e) => setPassword(e.target.value)} type="password" /> {errors.password && <p style={styles.error}>{errors.password}</p>} <button style={{ ...styles.button, opacity: isFormValid ? 1 : 0.5 }} disabled={!isFormValid} onClick={handleSubmit} > Submit </button> </div> </div> ); }; const styles = { container: { display: 'flex', alignItems: 'center', justifyContent: 'center', minHeight: '100vh', backgroundColor: '#f0f0f0', }, heading: { fontWeight: 'bold', fontSize: '25px', color: "green", textAlign: "center", }, subHeading: { fontWeight: 'bold', fontSize: '25px', textAlign: "center", }, form: { backgroundColor: '#fff', padding: '20px', borderRadius: '8px', boxShadow: '0 2px 4px rgba(0, 0, 0, 0.1)', width: '100%', maxWidth: '400px', margin: '0 auto', }, input: { width: '100%', padding: '12px', marginBottom: '12px', border: '1px solid #ccc', borderRadius: '10px', fontSize: '16px', transition: 'border-color 0.2s ease', }, button: { backgroundColor: 'green', color: '#fff', fontWeight: 'bold', fontSize: '16px', padding: '12px', border: 'none', borderRadius: '10px', cursor: 'pointer', width: '40%', transition: 'opacity 0.2s ease', }, error: { color: 'red', fontSize: '14px', marginBottom: '6px', }, }; export default App;