javascript - 提交事件 preventDefault() 不适用于带有 os9 的 iPad/iPhone

标签 javascript ios iphone ipad

<分区>

我有一个简单的表格来收集一个人的详细信息。它将数据发送到 firebase,我 e.preventDefault() 阻止它正常提交。这是处理程序;

let frm = document.forms[0];
frm.addEventListener('submit', function(e) {
    e.preventDefault();
    let formData = document.signup.elements;
    formValues = getFormInfo(formData);
    let submitted = writePupilRecord(formValues);
    console.log(submitted);
    removeForm();
    formResponse();
    return false;
});

这是很难弄清楚的一点。它适用于 Chrome、Safari、Firefox、android、最新的 iPhone/iPad。它不适用于旧的 ios 浏览器。 当我在本地使用 firebase 服务器尝试使用 firebase SDK 时,我可以在控制台中看到 GET 请求,当我导航到 localhost 时,在工作的浏览器上,当我提交表单时,没有 HTTP 请求,正如你所期望的,因为我有 preventDefault()ed。但是当我使用带有 ios9 的 XCode 模拟器执行此操作时,会向服务器发出第二个请求,包括提交的数据,就好像没有调用 preventDefault() 方法一样。 查找我的问题时,我遇到了将 return false; 添加到回调函数的建议,但这没有任何区别。 为什么 e.preventDefault() 不能只在稍旧的 iPad/iPhone 上工作,我该怎么做才能让它工作?我首先使用 javascript 构建表单,这在旧版 ios 中仍然有效。

最佳答案

It doesn't work in older osx browsers.

您正在使用 let,它是在 ES2015(也称为“ES6”)中引入的。这是旧浏览器中的语法错误。如果您不使用最新的浏览器,请将其切换为 var(在该代码中,它不会产生显着差异)。


我意识到这可能有一个 dupetarget,并且 there is ,但答案已过时。我有 added one这是最新的。

关于javascript - 提交事件 preventDefault() 不适用于带有 os9 的 iPad/iPhone,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43260682/

上一篇:android - Firebase 移动应用程序跟踪 - 使用哪些库?

下一篇:ios - 安装 ipa 文件时未收到推送通知

相关文章:

javascript - 如何使用javascript从选择标签中获取选定值并使用该值转到另一个页面

javascript - 在 Chrome 上的选项卡中打开窗口

ios - 从 .p12 证书 iOS 创建分发配置文件

ios - 如何使用 Core Data 的选项和 "None"选项创建 Eureka AlertRow?

ios - 在iOS上下载Dailymotion视频

iphone - 我的自定义标签栏可以像这样为 iPhone 创建吗?

iphone - 返回一个静态常量[]

iphone - 使用 OpenGL ES 进行缩放和滑动

javascript - 外部文件与内部对象的 GeoJSON 投影

javascript - 在超链接中调用 Javascript 方法