React Bootstrap表单:当验证为false时,不显示<Form.Control.Feedback> </ Form.Control.Feedback>

杰费列维斯

问题:

我正在实现一个表单并且很难理解为什么<Form.Control.Feedback></Form.Control.Feedback>在验证为false时不显示React Bootstrap:

重现步骤:

  1. 当用户单击Send Verification Code按钮时,按钮上type={'submit'}的道具会被触发。
  2. onClick={(event) => sendVerificationCode(event)}通过事件,我在这里使用event.preventDefault()event.stopPropagation();停止取消该事件。
  3. 在该字段中未输入任何内容的情况下,该sendVerificationCode功能可以正常运行,并且仅记录console.log('DO NOTHING');console.log(validated);测试。
  4. validated 正在工作并且为假,但是为什么<Form.Control.Feedback> </ Form.Control.Feedback>不显示。

忘记密码

// Page: Forgot Password
const ForgotPassword = () => {
  // React Hooks: State
  const [ email, setEmail ] = useState('');

  // React Hooks: Bootstrap
  const [ validated, setValidated ] = useState(false);

  // React Hooks: Refs
  const formRef: React.RefObject<HTMLFormElement> = useRef(null);

  // React Hooks: Redux
  const authError = useSelector((state: ReduxState) => state.authReducer.error);
  const dispatch = useDispatch();

  // React Hooks: React Router DOM
  let history = useHistory();

  // Send Verification Code
  const sendVerificationCode = (event: any) => {
    console.log('Component: sendVerificationCode working')

    // Event: Cancels Event (Stops HTML Default Form Submit)
    event.preventDefault();

    // Event: Prevents Event Bubbling To Parent Elements
    event.stopPropagation();

    // Check Form Validity
    if (formRef.current && formRef.current.checkValidity()) {
      // Validate Form
      setValidated(true);

      // Redux: Send Verification Code Request
      dispatch(sendVerificationCodeRequest(email, history));
    }
    else {
      // Do Nothing (Form.Control.Feedback Will Appear)
    }
  };

  return (
    <div>
      <NavigationBar />

      <Container id="forgot-password-container">
        <div id="forgot-password-inner-container">
          <div>
            <p id="forgot-password-title">Reset Password</p>
          </div>

          <Form ref={formRef} noValidate validated={validated}>
            <Form.Group controlId="forgot-password-email" className="form-group-container">
              <Form.Label className="form-field-title">Email</Form.Label>

              <Form.Control
                type={'email'}
                placeholder={'Email'}
                className="form-input"
                onChange={(event) => setEmail((event.target.value).toLowerCase())}
                value={email}
                maxLength={50}
                required
              />

              <Form.Control.Feedback type="invalid">Invalid email</Form.Control.Feedback>
            </Form.Group>

            <Button
              variant={'primary'}
              type={'submit'}
              id="login-button"
              onClick={(event) => sendVerificationCode(event)}
            >Send Verification Code</Button>
          </Form>

          <div id="login-sign-up-container">
            <p id="login-need-account-text">Need an account?</p>
            <button id="login-sign-up-button" type="button" onClick={() => history.push('sign-up')}>Sign Up</button>
          </div>
        </div>
      </Container>

      <Footer />
    </div>
  );
};

// Exports
export default ForgotPassword;
95faf8e76605e973

如果您看文档反应引导的逻辑是,他们实际设置validated的的道具Formtrue不论输入是否是有效的。

根据验证道具定义

将表单标记为已验证。将其设置为true将会切换表单元素上的任何验证样式。

因此,要解决您的问题,只需取出setValidated条件语句并将其放在下面的某个位置,例如event.stopPropagation()

const sendVerificationCode = (event: any) => {
    console.log('Component: sendVerificationCode working')

    // Event: Cancels Event (Stops HTML Default Form Submit)
    event.preventDefault();

    // Event: Prevents Event Bubbling To Parent Elements
    event.stopPropagation();

    setValidated(true);

    ...

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

默认情况下如何在输入字段中获取class =“ form-control”(Rails Form Helper + Bootstrap 3)

来自分类Dev

Access a form's control by name

来自分类Dev

在数据表中使用时,Bootstrap中的FORM-CONTROL类不会生效

来自分类Dev

当模式中的.form-control具有焦点时,关闭引导模式在Firefox中挂起

来自分类Dev

避免使用ActiveX Form Control激活。

来自分类Dev

How to Control Bootstrap Accordion Form Visibility

来自分类Dev

Bootstrap-如何在JavaScript中动态添加<select class =“ form-control”>?

来自分类Dev

在Bootstrap 3.3.5中无法单击form-control-feedback中的链接

来自分类Dev

如何将引导发光(用于“ form-control” CSS类中)放在div上?

来自分类Dev

引导程序3:如何在.form-control类上使用.col类

来自分类Dev

反应Bootstrap。如何获得Form.Control的价值?

来自分类Dev

如何将新的{@class =“ form-control}添加到MVC视图

来自分类Dev

反应Form.Control模型/值映射

来自分类Dev

与Boostrap .form-control一起使用时,过渡持续时间不起作用

来自分类Dev

使用autoForm Bootstrap 4时,在哪里设置“ form-control”类?

来自分类Dev

如何使Form Control接受空白字段但不包含所有空白字符?

来自分类Dev

如何从bootstrap-select中获取:focus和:valid值,例如form-control?

来自分类Dev

React bootstrap:如何将数组传递给Form.Control中的选项

来自分类Dev

如何在form1.control之上添加一个form2控件

来自分类Dev

<p>文本从.input-group .form-control容器中渗出,但不在jsFiddle中

来自分类Dev

如何验证选择class =“ form-control”

来自分类Dev

当模式中的.form-control成为焦点时,关闭引导程序模式在Firefox中将挂起

来自分类Dev

如何使用Simple_Form gem将bootstrap'form-control'类添加到选择中?

来自分类Dev

如何使Form Control变量可用于Form类以外的其他类?

来自分类Dev

form-control属性无法调整为引导模式模板

来自分类Dev

.form-control没有显示

来自分类Dev

将 bootstrap-select 与 input-group 和 form-control 类一起使用时的 z-index 问题

来自分类Dev

如何修复当输入类型从“文本”更改为“类型”时更改的 Form.control 输入宽度?

来自分类Dev

Bootstrap - 如何在与 form-control-lg 高度相同的情况下实现具有更大高度的自定义选择?

Related 相关文章

  1. 1

    默认情况下如何在输入字段中获取class =“ form-control”(Rails Form Helper + Bootstrap 3)

  2. 2

    Access a form's control by name

  3. 3

    在数据表中使用时,Bootstrap中的FORM-CONTROL类不会生效

  4. 4

    当模式中的.form-control具有焦点时,关闭引导模式在Firefox中挂起

  5. 5

    避免使用ActiveX Form Control激活。

  6. 6

    How to Control Bootstrap Accordion Form Visibility

  7. 7

    Bootstrap-如何在JavaScript中动态添加<select class =“ form-control”>?

  8. 8

    在Bootstrap 3.3.5中无法单击form-control-feedback中的链接

  9. 9

    如何将引导发光(用于“ form-control” CSS类中)放在div上?

  10. 10

    引导程序3:如何在.form-control类上使用.col类

  11. 11

    反应Bootstrap。如何获得Form.Control的价值?

  12. 12

    如何将新的{@class =“ form-control}添加到MVC视图

  13. 13

    反应Form.Control模型/值映射

  14. 14

    与Boostrap .form-control一起使用时,过渡持续时间不起作用

  15. 15

    使用autoForm Bootstrap 4时,在哪里设置“ form-control”类?

  16. 16

    如何使Form Control接受空白字段但不包含所有空白字符?

  17. 17

    如何从bootstrap-select中获取:focus和:valid值,例如form-control?

  18. 18

    React bootstrap:如何将数组传递给Form.Control中的选项

  19. 19

    如何在form1.control之上添加一个form2控件

  20. 20

    <p>文本从.input-group .form-control容器中渗出,但不在jsFiddle中

  21. 21

    如何验证选择class =“ form-control”

  22. 22

    当模式中的.form-control成为焦点时,关闭引导程序模式在Firefox中将挂起

  23. 23

    如何使用Simple_Form gem将bootstrap'form-control'类添加到选择中?

  24. 24

    如何使Form Control变量可用于Form类以外的其他类?

  25. 25

    form-control属性无法调整为引导模式模板

  26. 26

    .form-control没有显示

  27. 27

    将 bootstrap-select 与 input-group 和 form-control 类一起使用时的 z-index 问题

  28. 28

    如何修复当输入类型从“文本”更改为“类型”时更改的 Form.control 输入宽度?

  29. 29

    Bootstrap - 如何在与 form-control-lg 高度相同的情况下实现具有更大高度的自定义选择?

热门标签

归档