在输入(类型文件)上使用必需的属性会导致输入在iPhone ios 11上停止工作

问题描述 投票:3回答:1

我有一个用于上载图像的表格。输入(类型文件)具有必填属性,因此在选择文件之前选择提交会导致验证错误。当将iPhone与ios 11一起使用时(我已经对chrome,firefox和safari进行了测试),如果您首先选择“提交”以接收验证错误(在iPhone ios 11上为“选择文件”),然后选择“仍然显示“选择文件”时(选择“文件”)(这意味着要重现该问题,您不能先选择屏幕上的其他位置来消除“选择文件”验证错误),弹出式窗口允许您选择文件不出现。从现在开始,即使刷新页面,“选择文件”也不会做任何事情。关闭浏览器(通过双击主屏幕按钮并在浏览器上向上滑动),然后重新打开浏览器将使输入再次起作用(直到您按照上述说明重现问题)。我发现,如果在下面的代码中删除带有content属性的meta标签,则不会发生此问题。

这里是代码(仅是基本形式)。

<!DOCTYPE html>
<html>
<head>
    <meta charset="utf-8" />
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
    <title></title>
</head>
<body>
    <form enctype="multipart/form-data">
        <input required type="file" />
        <input type="submit" value="Add File" />
    </form>
</body>
</html>

对此有何想法?

html ios11 input-type-file
1个回答
0
投票

似乎是移动Safari的错误。半秒钟后,通过模糊活动元素的焦点,我最大限度地减小了在显示验证消息时有人单击输入的可能性。

var form = document.querySelector('form');
var button = document.querySelector('input[type="submit"]');
button.onclick = function (e) {
  if (!form.checkValidity()) {
    setTimeout(function () {       
      document.activeElement.blur();
    }, 500);
  }
};
© www.soinside.com 2019 - 2024. All rights reserved.