Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

313
Views
How to show error if client did not click check, but with not default value

I am trying to show error message if client did not click checkbox, but it shows the error message by default. How do I manage to show it only after submission?

const InputForm=()=>{
    const [value ,setValue] = useState("");
    const [check,setCheck] = useState(null)

    const getValue=(e)=>{
        setValue(e.target.value);
    }

    const getCheck=(e)=>{
        setCheck(e.target.checked);
    }

    const handleSubmit=(e)=>{
        e.preventDefault();
        const emailValidator =/^\w+([\.-]?\w+)*@\w+([\.-]?\w+)*(\.\w{2,3})+$/
        if (value.match(emailValidator)) {
            console.log("Valid");
        }else{
            console.log("Invalid");
        }
        
    };

    return(
        <form className="inputForm" onSubmit={handleSubmit}>
            <div className="tos" >
                <label className="container">
                    <span>I agree to <strong>terms of service</strong></span>
                    <input type="checkbox" onChange={getCheck}/>
                    <span className="checkmark" ></span>
                </label>
                <p style={check?{display:"none"}:{display:"block",color:"red"}}>You must accept the terms and conditions</p>
            </div>
            <Footer/>
        </form>
    )
};
about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

import { useEffect, useState } from "react";

export default function App() {
  const [checked, setChecked] = useState(null);
  const [error, setError] = useState(false);

  useEffect(() => {
    checked && setError(false);
  }, [checked, setError]);

  const handleSubmit = (e) => {
    e.preventDefault();

    if (!checked) {
      setError(true);
    } else {
      // do what you want
    }
  };

  return (
    <form className="inputForm" onSubmit={handleSubmit}>
      <div className="tos">
        <label className="container">
          <span>
            I agree to <strong>terms of service</strong>
          </span>
          <input
            type="checkbox"
            onChange={(e) => setChecked(e.target.checked)}
          />
          <span className="checkmark"></span>
        </label>
        {error && (
          <p style={{ color: "red" }}>
            You must accept the terms and conditions
          </p>
        )}
      </div>

      <button type="submit">submit</button>
    </form>
  );
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>

Here is a solution : https://codesandbox.io/s/crimson-field-m6j5h?file=/src/App.js

You should have a separate state for the error and render the message only if that state is truthy. That state should be set when calling you handleSubmit function. To remove the error message when the checkbox is checked, you can listen to it in a useEffect hook.

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!