-1

我试图了解为什么我无法根据 HTML5 验证显示浏览器验证错误消息。

我的标记中有一个要验证的字段,以及一个调查其有效性的链接,以便知道是否在点击时触发。值得注意的是,这不在表单中,从阅读HTML5 规范来看,我不清楚这是否是一个问题。当然,我可以对表单外的字段使用 checkValidity 方法这一事实对我来说是值得一看的。

HTML

<input type="email" id="email" required="required">
<a id="link" href="some_external_link" target="_blank">Do the thing</a>

Javascript/JQuery

$("#link").on("click", function(event) {
  var email = $('#email')[0];
  if (!email.checkValidity()) {
    event.preventDefault();
  }
});

从我目前看到的行为来看,当我将其放入无效的电子邮件地址并尝试单击链接时,我希望这会(基于规范)触发一个“简单事件”,正如我明白了吧,是浏览器错误信息显示必须挂钩的。

但相反,不会出现验证消息。验证确实失败并且阻止了链接跟踪,如果我填写有效的电子邮件,则相反。我是否遗漏了有关如何触发或处理事件的信息?

还有其他答案涉及在该字段周围创建一个表单和提交按钮,这将是我的最后手段,但这是获得所需功能的许多额外无意义的噪音,我想了解我的根本原因我看到了。

4

1 回答 1

0

据我所知,没有可以挂钩的外部事件 - 浏览器在验证时不会从单个元素发布任何内容,而是在处理表单时在内部完成所有工作。

reportValidity()在一些早期的 W3C 文档中调用了一种方法,该方法在 Chrome 中可用,并且在可能的 Firefox 功能列表中,虽然还不足以意味着它可用,但这有助于指出checkValidity() 它不显示验证错误自己给用户。

如果您想暂时获得此功能,则必须将控件包装在表单中并抑制其在 Javascript 中的默认提交行为,或者以浏览器默认实现以外的方式向用户发出验证失败的信号。

于 2016-10-10T15:54:10.843 回答