javascript - 无法获取react-hook-form来正确验证电子邮件

标签 javascript reactjs forms next.js react-hook-form

我花了很长时间试图让这个正确验证,但它只是没有发生。我在底部添加了一些文本,以便在电子邮件发生错误时输出,但无论如何,它总是显示无错误

编辑: 沙盒链接 - https://codesandbox.io/s/damp-star-8gv3l

这是我的输入:

           <div>
              <label
                htmlFor="email"
                className="block text-sm font-medium text-gray-700"
              >
                Email address
              </label>
              <div className="mt-1">
                <input
                  {...register("email", {
                    required: {
                      value: true,
                      message: "Please enter your email address",
                    },
                    pattern: {
                      value:
                        /^(([^<>()[\]\\.,;:\s@\"]+(\.[^<>()[\]\\.,;:\s@\"]+)*)|(\".+\"))@((\[[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\])|(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,}))$/,
                      message: "Invalid email address",
                    },
                  })}
                  id="email"
                  name="email"
                  type="email"
                  autoComplete="off"
                  className={`input w-full ${
                    !errors.email && dirtyFields.email && "!bg-green-50"
                  }`}
                />
              </div>
              {errors.email ? "error" : "no error"}
              {errors.email?.message && (
                <ErrorMessage>{errors.email?.message}</ErrorMessage>
              )}
            </div>

这是我的钩子(Hook):

  const {
    register,
    watch,
    control,
    formState: { errors, isValid, dirtyFields },
  } = useForm<SignupProps>({
    defaultValues: {
      email: "",
      password: "",
      confirmPassword: "",
      username: "",
      firstName: "",
      surname: "",
      isShop: false,
    },
  });

最佳答案

根据您的代码和框,您需要更改以下内容:

  • 添加<form />标签
  • 添加mode: 'onChange'useForm输入时显示错误的选项
  • 如果您想在提交时触发验证,请添加提交按钮
  • 显示验证中传递的错误消息

工作代码和框:https://codesandbox.io/s/autumn-sea-ps37x?file=/pages/index.js

关于javascript - 无法获取react-hook-form来正确验证电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70395392/

相关文章:

javascript - 如何在 rivetjs 中更新 onkeyup 模型

javascript - 从没有 eval 和 new Function() 的字符串创建 js 函数

javascript - Svelte:<svelte:window bind:innerHeight/> 在调整窗口大小时无法使用 div 中的样式属性

javascript - JS - 如何跨同一网络应用程序的多个实例实时更新 DOM?

reactjs - 搜索后点击特定成员(member)如何查看其完整详细信息?

javascript - JQuery 添加链接到文本

javascript - 未捕获的语法错误 : Unexpected token export

php - 将 HTML 选择传递给 PHP 变量

javascript - angularJS - 表单中的重复输入

javascript - JQuery 提交 - 无限循环