【发布时间】:2023-03-23 00:15:02
【问题描述】:
我很绝望。尝试使用模式验证电子邮件表单字段但它不起作用。
这是字段:
<form id="benutzerform" name="benutzerform" action="" method="POST" class="row g-3 mb-3 pb-3 needs-validation" novalidate="true">
....
<div class="input-group has-validation">
<span class="input-group-text"><i class="bi bi-at"></i></span>
<input type="email" class="form-control" id="email" pattern="/[^@]+@[^@]+\.[a-zA-Z]{2,}/i" required>
<div class="invalid-feedback"> Eine korrekte Emailadresse ist unbedingt erforderlich! </div>
</div>
它总是显示无效反馈。
当我在控制台中执行此操作时,它可以工作。
mailpattern=/^([\w\.\-]+)@([\w\-]+)((\.(\w){2,4})+)$/i;
mailpattern.test('me@home.de');
true
但使用此函数验证失败:
function validateFormFields()
{
let f = document.getElementsByClassName('needs-validation')[0];
if (f.checkValidity() === false)
{
f.classList.add('was-validated');
return false;
}
return true;
}
我哪里出错了?
S O L U T I O N
两种方式(@Developer 和@Ryszard Czech)都可以验证表单。
但最简单和最快的方法是删除斜线。然后checkValidity() 就可以正常工作了!
【问题讨论】:
-
你的元素有什么这个类:
needs-validation'? -
这就是引导程序在客户端验证时显示消息的方式。 f.checkValidity() 将伪类 :invalid 或 :valid 添加到表单字段中,当表单类更改为 .was-validated 时,引导程序显示无效反馈字段
-
请出示您的
<form>标签。 -
我将表单标签添加到我的初始帖子中。表单的其余部分会像您期望的那样进行验证...
-
验证电子邮件地址的最佳方法是发送电子邮件并检查返回值。请看看这些网站:TLD list; valid/invalid addresses; regex for RFC822 email address
标签: javascript html regex email