javascript - 用于自定义检查的 HTML5 约束验证

标签 javascript html constraint-validation-api

我想检查用户名和电子邮件地址在客户端是否唯一。

有没有办法为约束验证添加自定义验证?

或者还有其他推荐的方法吗?

我假设我必须发送 async http 请求(我在服务器端使用 node js),但我想遵循这方面的最佳实践。

最佳答案

是的,您可以使用约束验证 api 中的 setCustomValidity 函数,它是每个表单字段(例如 HTMLInputElement)的一部分。

<input name="username">
<script>
  const field = document.querySelector('[name="username"]');
  field.addEventListener('change', () => {
    fetch('https://example.com/myapiforcheckingusername' {
      method:'POST',
      body: JSON.stringify({username: field.value})
    }).then((response) => {
      const alreadyExists = // process response to check if username already exists

      if (alreadyExists) {
        field.setCustomValidity('The username already exists!');
      }
    });
  });
</script>

上面的代码显示了如何对输入字段进行异步验证。如果 setCustomValidity 不是空字符串,则表示这是一个表单错误。如果在随附的表单上调用 checkValidity,则返回 false

您可以查看 MDN documentation有关此问题的更多示例。

关于javascript - 用于自定义检查的 HTML5 约束验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57575668/

相关文章:

javascript - 从 PHP 中的拆分文本中获取出现次数最多的前 5 个内容

javascript - 在 JS 中一分钟后清除表的数据

javascript - InnerHTML 属性追加而不是替换数据

javascript - 如何在 HTML 表单验证中包含自定义字段验证功能?

javascript - 为什么自定义验证消息导致我的 HTML 表单元素保持无效?

javascript - 比较多个数组中的值

javascript - 如果其中一个 div 是自动调整大小,则使 2 个 div 垂直显示以填充它的父级

javascript - 为什么我的 drawImage 不接受 '0+constant' 的高度参数?

css - 如何在换行成多行的范围内对齐缩进线?