<分区>
标签 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/