【问题标题】:ReactJS: Using value from form - radio buttonReactJS:使用表单中的值 - 单选按钮
【发布时间】:2021-09-21 11:41:34
【问题描述】:

我有一个带有一些变量的表单:

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

deletedDate 是一个单选按钮,应该具有值 -> “all”、“true”、“false”

形式是:

<AvForm model={formModel} onSubmit={filterResults} onReset={handleFormReset}>
 <AvGroup>
                    <Label id="realm" for="realm-realm">
                      Realm Name
                    </Label>
                    <AvField
                      id="realm"
                      data-cy="realm"
                      type="text"
                      name="realm"
                      onChange={handleChange}
                      value={formModel.realm}
                    />
                  </AvGroup>
<FormGroup check>
                      <Label id="deletedDate" check>
                        <Input
                          id="deletedDate"
                          data-cy="deletedDate"
                          type="radio"
                          name="deletedDate"
                          value="all"
                          checked={formModel.deletedDate === 'all'}
                          onChange={handleChange}
                        />{' '}
                        All
                      </Label>
                      <br></br>
                      <Label id="deletedDate" check>
                        <Input
                          id="deletedDate"
                          data-cy="deletedDate"
                          type="radio"
                          name="deletedDate"
                          value="true"
                          checked={formModel.deletedDate === 'true'}
                          onChange={handleChange}
                        />{' '}
                        Yes
                      </Label>
                    </FormGroup>
                    <FormGroup check>
                      <Label id="deletedDate" check>
                        <Input
                          id="deletedDate"
                          data-cy="deletedDate"
                          type="radio"
                          name="deletedDate"
                          value="false"
                          checked={formModel.deletedDate === 'false'}
                          onChange={handleChange}
                        />{' '}
                        No
                      </Label>
                    </FormGroup>

现在,当我提交表单时,我调用 filterResults:

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

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

现在我的问题是:

在 filterResults 中,我插入了一个控制台日志以查看值。当我提交表单时,我只能读取有关领域的值,而没有任何有关 deletedDate 的内容,我不明白为什么。如何在 filterResult 中使用 deletedDate? 我的表格有什么问题?谢谢

【问题讨论】:

    标签: javascript reactjs reactstrap


    【解决方案1】:

    看起来您正在使用两种不同的表单,当您使用 AV 表单的道具提交时,您无法访问其他表单值,我建议您将这些值存储在同一个表单中

     <AvForm model={formModel} onSubmit={filterResults} onReset={handleFormReset}>
     <AvGroup>
                        <Label id="realm" for="realm-realm">
                          Realm Name
                        </Label>
                        <AvField
                          id="realm"
                          data-cy="realm"
                          type="text"
                          name="realm"
                          onChange={handleChange}
                          value={formModel.realm}
                        />
                      </AvGroup>
    <AvGroup>
                        <Label id="realm" for="realm-realm">
                          Radio Input
                        </Label>
                        <AvField
                          id="deletedDate"
                          data-cy="deletedDate"
                          type="type value this for uses for radio inputs"
                          name="deletedDate"
                          onChange={handleChange}
                          value={formModel.deletedDate}
                        />
                      </AvGroup>
    

    ,但是如果你想完成这项工作,我建议你从状态中获取你的值,在这里你将你的值存储在状态中,但不对它们做任何事情

    【讨论】:

    • 谢谢您的回答,在我应该插入“收音机”的类型中才能有一个单选按钮?以及单选按钮的值应该去哪里?
    • 我不确定这个表单库,你应该检查文档并寻找单选按钮的用法,但重要的是保留所有文件在 标签内,这样你就有了访问,编辑:在这里找到文档和示例availity.github.io/availity-reactstrap-validation/components/…
    猜你喜欢
    • 2021-09-19
    • 1970-01-01
    • 2019-04-13
    • 2018-10-24
    • 2016-04-05
    • 1970-01-01
    • 2021-04-22
    • 2014-10-14
    相关资源
    最近更新 更多