【发布时间】:2017-04-06 16:21:33
【问题描述】:
我有一个简单的表格来收集一个人的详细信息。它将数据发送到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 SDK获得的firebase服务器本地尝试它时,当我导航到localhost时,我可以在控制台中看到GET请求,当我提交表单时,在工作的浏览器上没有HTTP请求,正如你所期望的那样,因为我有preventDefault()ed。但是当我使用带有 ios9 的 XCode 模拟器执行此操作时,会向服务器发出第二个请求,包括提交的数据,就好像没有调用 preventDefault() 方法一样。
查找我的问题时,我遇到了将 return false; 添加到回调函数的建议,但这没有任何区别。
为什么 e.preventDefault() 不能仅在稍旧的 iPad/iPhone 上工作,我该怎么做才能让它工作?我首先使用 javascript 构建表单,这仍然适用于旧版 ios。
【问题讨论】:
-
查找 ES6 支持
标签: javascript ios iphone ipad