提交事件preventDefault()无法在带有os9的iPad / iPhone上运行

时间:2017-04-06 16:21:34

标签: 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 SDK在本地尝试使用firebase SDK时,我可以在控制台中看到当我导航到localhost时的GET req以及当我提交表单时在工作的浏览器上没有HTTP请求,正如您所期望的那样,因为我有preventDefault()编辑。但是当我使用带有ios9的XCode模拟器时,会向服务器发出第二个请求,包括提交的数据,就好像没有调用preventDefault()方法一样。 在查看我的问题时,我遇到了将return false;添加到回调函数的建议,但这没有任何区别。 为什么e.preventDefault()不能仅在较旧的iPad / iPhone上使用,我该怎么做才能使它工作?我首先使用javascript来构建表单,这仍然适用于较旧的ios。

1 个答案:

答案 0 :(得分:1)

  

它不适用于较旧的osx浏览器。

您正在使用let,这是在ES2015中引入的(又名" ES6")。它是旧版浏览器中的语法错误。如果您没有处理最新的浏览器,请将其切换为var(在该代码中,它不会产生重大影响)。

我意识到可能有一个dupetarget,there is,但答案已经过时了。我已经added one更新了。