【问题标题】:Form submit event is not dispatched correctly表单提交事件未正确分派
【发布时间】:2021-09-04 16:45:42
【问题描述】:

我正在编写一段使用 react-bootstrap 编写的代码,包括 FormControl 和 InputGroup。事情看起来像:

  const formRef = useRef(null);

  return (
    <Container
      fluid={true}
      className={[styles.container, 'justify-content-start flex-column'].join(
        ' '
      )}
    >
      <Form
        onSubmit={e => console.log('submitting:', e)}
        className={styles.searchForm}
        ref={formRef}
      >
        <div className={styles.searchInput}>
          <div className={styles.inputWrapper}>
            <InputGroup className={styles.inputGroup}>
              <FormControl
                placeholder='Locality'
                aria-label='Search locality'
              />
              <InputGroup.Append>
                <Icon
                  icon={faMapMarker}
                  classes={styles.searchInputOpaqueIcon}
                  onClick={async () => {
                    try {
                      const position = await getPosition();
                      setPosition(position);
                    } catch (err) {
                      console.error(err.message);
                    }
                  }}
                />
              </InputGroup.Append>
            </InputGroup>
          </div>
          <div className={styles.inputWrapper}>
            <InputGroup>
              <FormControl placeholder='Search...' aria-label='Search string' />
              <InputGroup.Append>
                <Icon
                  icon={faSearch}
                  classes={styles.searchInputIcon}
                  onClick={() => {
                    formRef.current.dispatchEvent(
                      new Event('submit', { cancelable: true })
                    );
                    console.log('dispatched submit');
                  }}
                />
              </InputGroup.Append>
            </InputGroup>
          </div>
        </div>
        <Icon onClick={close} icon={faTimesCircle} classes={styles.closeIcon} />
      </Form>
    </Container>
  );

我的印象是像上面那样调度提交事件应该触发表单提交,因此onSubmit。这没有发生。我从控制台日志中看到调度通过并且从未调用过 onSubmit。

【问题讨论】:

    标签: javascript reactjs react-bootstrap


    【解决方案1】:

    这行得通:

                <Icon
                  icon={faSearch}
                  classes={styles.searchInputIcon}
                  onClick={() => {
                    if (typeof formRef.current.requestSubmit === 'function') {
                      formRef.current.requestSubmit();
                      console.log('requested submit');
                    } else {
                      formRef.current.dispatchEvent(
                        new Event('submit', { cancelable: true })
                      );
                      console.log('dispatched submit');
                    }
                  }}
                />
    

    【讨论】:

      猜你喜欢
      • 2016-01-07
      • 2019-08-31
      • 2017-12-21
      • 1970-01-01
      • 1970-01-01
      • 2014-06-02
      • 2023-02-16
      • 2018-01-02
      • 1970-01-01
      相关资源
      最近更新 更多