HTML5 表单验证看不到消息弹出 Mac Safari

Posted

技术标签:

【中文标题】HTML5 表单验证看不到消息弹出 Mac Safari【英文标题】:HTML5 form validation out of view not getting message popup Mac Safari 【发布时间】:2019-06-25 12:28:17 【问题描述】:

我有一个简单的表单,其中只有一长串文本字段。每个字段都标记为必填项。像这样:

在浏览器中,如果我将无效的空字段滚动到视图之外,然后提交表单。表单将滚动到无效字段,突出显示字段的边框,但不显示应包含验证文本“请填写此字段”的消息弹出窗口。

但是,如果在我提交表单时,空白字段在视图中 - 那么 Safari 会按预期显示消息气泡和文本。

我在 Mac 上使用 Safari 浏览器(版本 12.0.2)。

这是一个非常简单的表单示例。

https://jsfiddle.net/7ho0udrw/

<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title></title>
</head>
<body>
    <form action="">
        <input required="required"></br>
        <input required="required"></br>
        <input required="required"></br>
        <input required="required"></br>
        <input required="required"></br>
        <input required="required"></br>
        <input required="required"></br>
        <input required="required"></br>
        <input required="required"></br>
        <input required="required"></br>
        <input required="required"></br>
        <input required="required"></br>
        <input required="required"></br>
        <input required="required"></br>
        <input required="required"></br>
        <input required="required"></br>
        <input required="required"></br>
        <input required="required"></br>
        <input required="required"></br>
        <input required="required"></br>
        <input required="required"></br>
        <input required="required"></br>
        <input required="required"></br>
        <input required="required"></br>
        <input type="submit">
    </form>
</body></html>

【问题讨论】:

【参考方案1】:

显然,应该发生的是消息气泡弹出,然后在您滚动窗口时消失。因此 Safari 会弹出气泡,然后滚动窗口以显示问题字段,然后关闭气泡。哎呀。

这是一个可能的解决方法:添加第二个提交按钮

<form>
  <input required name="foo">
  <button class="submit">submit</button>
  <button class="safari"></button>
</form>

通过css隐藏

.safari  display: none; 

并在用户点击可见按钮后使用javascript触发点击隐藏按钮。

$('.button').click(function()
  setTimeout(function()
    $('.safari').click()
  , 1);
);

fiddle

【讨论】:

以上是关于HTML5 表单验证看不到消息弹出 Mac Safari的主要内容,如果未能解决你的问题,请参考以下文章

如何自定义 HTML5 表单所需的验证消息? [复制]

如何删除所需属性的 HTML5 表单验证默认错误消息 [重复]

自定义 HTML5 表单验证最初不显示自定义错误

设置自定义 HTML5 必填字段验证消息

如何使用带有 Vue 的 HTML 5 验证添加错误消息

iOS Safari:默认验证气泡消息未正确对齐