简体   繁体   English

如何在复选框和单选按钮中设置默认值?

[英]How to set default value in checkbox and radio button?

I am making a simple react application where I have some default values to set to the input fields.我正在制作一个简单的反应应用程序,其中我有一些默认值设置为输入字段。

Here there are three input fields,这里有三个输入字段,

-> Textbox   = UserName

-> Checkbox  = Relocation

-> Radio     = ContactMode

Their respective values are,它们各自的值是,

 {
    UserName: "Test User",
    Relocation: true,
    ContactMode: "Email",
 }

Working Snippet:工作片段:

 const { useState } = React; const App = () => { const [formValue, setFormValue] = useState({ UserName: "Test User", Relocation: true, ContactMode: "Email", }); const handleInputChange = (e) => { const { name, value } = event.target; setFormValue({ ...formValue, [name]: value, }); }; const submitData = () => { console.log(formValue) } return ( <div> <form> <label> User Name </label> <input type="text" name="UserName" value={formValue.UserName} onChange={handleInputChange} /> <br /> <br /> <label> Willing to relocate? </label> <input type="checkbox" name="Relocation" value={formValue.Relocation} onChange={handleInputChange} /> <br /> <br /> <label> Contact Mode </label> <input type="radio" name="ContactMode" value={`Email`} onChange={handleInputChange} />{" "} Email <input type="radio" name="ContactMode" value={`Text`} onChange={handleInputChange} />{" "} Text <input type="radio" name="ContactMode" value={`Both`} onChange={handleInputChange} />{" "} Both <br /> <br /> <button type="button" onClick={submitData}> Submit </button> </form> </div> ); }; ReactDOM.render(<App />, document.getElementById("root"));
 <script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.11.0/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.11.0/umd/react-dom.production.min.js"></script> <div id="root"></div>

Problem:问题:

-> In the above eg.., Only the text field value is got set but checkbox and radio button values not got set by default. -> 在上面的例子中,只有文本字段的值被设置,但复选框和单选按钮的值默认没有设置。

Expectaion:期望:

-> All the three input fields needs to get set by its default values. -> 所有三个输入字段都需要设置为默认值。

-> On changing any input field and upon clicking submit button, the latest changes needs to get logged via formValue .. -> 在更改任何输入字段并单击提交按钮时,需要通过formValue记录最新的更改。

You need to use checked你需要使用检查

 const { useState } = React; const App = () => { const [formValue, setFormValue] = useState({ UserName: "Test User", Relocation: true, ContactMode: "Email", }); const handleInputChange = (e) => { const { name, value } = event.target; setFormValue({ ...formValue, [name]: value, }); }; const handleCheckedChange = (e) => { const { name, checked } = event.target; setFormValue({ ...formValue, [name]: checked, }); } const submitData = () => { console.log(formValue) } return ( <div> <form> <label> User Name </label> <input type="text" name="UserName" value={formValue.UserName} onChange={handleInputChange} /> <br /> <br /> <label> Willing to relocate? </label> <input type="checkbox" name="Relocation" checked={formValue.Relocation} onChange={handleCheckedChange} /> <br /> <br /> <label> Contact Mode </label> <input type="radio" name="ContactMode" checked={formValue.ContactMode === "Email"} value={`Email`} onChange={handleInputChange} />{" "} Email <input type="radio" name="ContactMode" checked={formValue.ContactMode === "Text"} value={`Text`} onChange={handleInputChange} />{" "} Text <input type="radio" name="ContactMode" checked={formValue.ContactMode === "Both"} value={`Both`} onChange={handleInputChange} />{" "} Both <br /> <br /> <button type="button" onClick={submitData}> Submit </button> </form> </div> ); }; ReactDOM.render(<App />, document.getElementById("root"));
 <script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.11.0/umd/react.production.min.js"></script> <script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.11.0/umd/react-dom.production.min.js"></script> <div id="root"></div>

The equivalent value property for a checkbox is checked :复选框的等效value属性被checked

<input
          type="checkbox"
          name="Relocation"
          checked={formValue.Relocation}
          onChange={handleInputChange}
        />
    const { useState } = React;

const App = () => {
  const [formValue, setFormValue] = useState({
    UserName: "Test User",
    Relocation: true,
    ContactMode: "Email",
  });

  const handleInputChange = (e) => {
    const { name, value } = event.target;
    setFormValue({
      ...formValue,
      [name]: value,
    });
  };
  
  const submitData = () => {
    console.log(formValue)
  }

  return (
    <div>
      <form>
        <label> User Name </label>
        <input
          type="text"
          name="UserName"
          value={formValue.UserName}
          onChange={handleInputChange}
        />
        <br />
        <br />
        <label> Willing to relocate? </label>
        <input
          type="checkbox"
          name="Relocation"
          value={formValue.Relocation}
          onChange={handleInputChange}
        />
        <br />
        <br />
        <label> Contact Mode </label>
        <input
      type="radio"
      name="ContactMode"
      value={`Email`}
      onChange={handleInputChange}
      checked={formValue.ContactMode==="Email"}
    />{" "}
    Email
    <input
      type="radio"
      name="ContactMode"
      value={`Text`}
      onChange={handleInputChange}
      checked={formValue.ContactMode==="Text"}
    />{" "}
    Text
    <input
      type="radio"
      name="ContactMode"
      value={`Both`}
      onChange={handleInputChange}
      checked={formValue.ContactMode==="Both"}
      
    />{" "}
    Both
    <br />
    <br />
        <button type="button" onClick={submitData}> Submit </button>
      </form>
    </div>
  );
};

ReactDOM.render(<App />, document.getElementById("root"));

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM