【问题标题】:ReactJS: Radio button in a formReactJS:表单中的单选按钮
【发布时间】:2021-09-19 23:53:07
【问题描述】:

我正在使用 reactstrap 创建表单,但单选按钮有问题,因为我不明白如何保存值。

变量的形式是:

const [formModel, setFormModel] = useState({
    name: '',
    deletedDate: '',
  });

我的表格是:

<AvForm model={formModel} onSubmit={filterResults} onReset={handleFormReset}>
<h3 className="text-center">Form</h3>
              <Row>
                <Col md="6">
                  <AvGroup>
                    <Label id="name" for="name">
                      Name
                    </Label>
                    <AvField
                      id="name"
                      data-cy="name"
                      type="text"
                      name="name"
                      onChange={handleChange}
                      value={formModel.name}
                    />
                  </AvGroup>
<FormGroup check>
                      <Label check>
                        <Input
                          id="deletedDate"
                          data-cy="deletedDate"
                          type="radio"
                          name="deletedDate"
                          value="true"
                          onChange={handleChange}
                        />{' '}
                        Yes
                      </Label>
                    </FormGroup>
   <FormGroup check>
                      <Label check>
                        <Input
                          id="deletedDate"
                          data-cy="deletedDate"
                          type="radio"
                          name="deletedDate"
                          value="false"
                          onChange={handleChange}
                        />{' '}
                        No
                      </Label>
                    </FormGroup>
</AvGroup>

我的过滤结果是:

    const filterResults = (event, errors, values) => {
        console.log('values ', values);
        let entity = null;
        if (errors.length === 0) {
          entity = {
            ...values,
          };
        }
        //other code...

  const handleChange = e => {
    console.log('e ', e);
    const { name, value } = e.target;
    console.log('name ', name, ' value ', value);
    setFormModel(prevState => ({
      ...prevState,
      [name]: value,
    }));
  };

现在,当我提交表单时,如果我检查了 filterResult 函数中的 deletedDate 单选按钮,我没有任何关于它的值(但我有名称的值)

如何以正确的方式使用单选按钮来保存值?

非常感谢

【问题讨论】:

    标签: javascript reactjs reactstrap


    【解决方案1】:

    主要问题是您缺少checked 属性:

     <label>
        <input
          id="deletedDate"
          data-cy="deletedDate"
          type="radio"
          name="deletedDate"
          value="true"
          checked={formModel.deletedDate === "true"}
          onChange={handleChange}
        />{" "}
        Yes
      </label>
    
      <label>
        <input
          id="deletedDate"
          data-cy="deletedDate"
          type="radio"
          name="deletedDate"
          value="false"
          checked={formModel.deletedDate === "false"}
          onChange={handleChange}
        />{" "}
        No
      </label>
    

    See it running in a sandbox

    编辑:我已向沙箱添加了提交处理程序。

    【讨论】:

    • 谢谢你,你是对的!但是我有一个问题,为什么我在 filterResult 中看不到我的变量值?在控制台日志中,我只看到其他变量的值
    • 我不知道AvForm是什么组件,所以我帮不了你。但是,我向沙箱添加了一些提交处理。看看吧。
    猜你喜欢
    • 2019-04-13
    • 2021-09-21
    • 2018-10-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多