Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How to set the value of a checkbox inside a form in reactjs

I have a form that I shall use for filtering searches. Along with other fields, I have a checkbox.
This is how I am handling the submit

const [formData, setFormData] = useState({
    name: "",
    location: "",
    schoolName: "",
    class: 0,
    board: 0,
    homeTuition: false,
  });

  const changeFormData = (e) => {
    setFormData({
      ...formData,
      [e.target.name]: e.target.value,
    });
  };

  const formDataSubmit = (e) => {
    e.preventDefault();
    console.log(formData);
    setFormData({
      name: "",
      location: "",
      schoolName: "",
      class: 0,
      board: 0,
      homeTuition: false,
    });
  };

<form onSubmit={(e) => formDataSubmit(e)}>
            <div className="word">
              <input
                type="text"
                name="name"
                id="name"
                placeholder="teacher name"
                value={formData.name}
                onChange={(e) => changeFormData(e)}
              />
            </div>
            <div className="word">
              <input
                type="text"
                name="location"
                id="location"
                placeholder="location / area name"
                value={formData.location}
                onChange={(e) => changeFormData(e)}
              />
            </div>
            <div className="word">
              <input
                type="text"
                name="schoolName"
                id="schoolName"
                placeholder="Name of School"
                value={formData.schoolName}
                onChange={(e) => changeFormData(e)}
              />
            </div>

            <div className="select-menu">
              <select
                value={formData.class}
                name="class"
                id="class"
                onChange={(e) => changeFormData(e)}
              >
                <option value="0" disabled hidden>
                  Select Class
                </option>
                <option value="1">1</option>
                <option value="2">2</option>
                <option value="3">3</option>
                <option value="4">4</option>
                <option value="5">5</option>
                <option value="6">6</option>
                <option value="7">7</option>
                <option value="8">8</option>
                <option value="9">9</option>
                <option value="10">10</option>
                <option value="11">11</option>
                <option value="12">12</option>
              </select>
            </div>

            <div className="select-menu">
              <select
                value={formData.board}
                name="board"
                id="board"
                onChange={(e) => changeFormData(e)}
              >
                <option value="0" disabled hidden>
                  Select Board
                </option>
                <option value="mbose">MBOSE</option>
                <option value="cbse">CBSE</option>
                <option value="icse">ICSE</option>
              </select>
            </div>

            <div className="home-tutor">
              <label htmlFor="homeTuition">
                Home Tutor
                <input
                  type="checkbox"
                  name="homeTuition"
                  id="homeTuition"
                  value={formData.homeTuition}
                  onChange={(e) => changeFormData(e)}
                />
                <span></span>
              </label>
            </div>

            <div className="submit-button">
              <button type="submit">Apply Filter</button>
            </div>
          </form>

I want to set homeTuition as true if checked else false. But since I am new to react I do not understand where to write this logic.

I tried using a seperate useState for this that changes the bool value onClick but I understood that it immediately doesn’t effect the target.value. So please help me how should I do it?.

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

Add addition function:

  const changeCheckbox = (e) => {
    setFormData({
      ...formData,
      [e.target.name]: e.target.checked,
    });
  };  

Change input tag for checkbox (use ‘checked’ instead ‘value’ and new function):

        <input
          type="checkbox"
          name="homeTuition"
          id="homeTuition"
          checked={formData.homeTuition}
          onChange={(e) => changeCheckbox(e)}
        /> 
Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading