2017-04-06 3 views
0

私は、人の詳細を収集するための簡単なフォームを持っています。 Firebaseにデータを送信し、正常に送信を停止するには、e.preventDefault()を送信します。これはハンドラです。イベントを送信するpreventDefault()がos9を使用してiPad/iPhoneで動作しない

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、アンドロイド、最新のiPhone/iPadで動作します。それは古いiosブラウザでは動作しません。 firebase SDKで取得したfirebaseサーバでローカルで試してみると、ローカルホストに移動するときにGET reqを見ることができます。私はpreventDefault()を持っているからです。しかし、ios9でXCodeシミュレータを使用すると、preventDefault()メソッドが呼び出されないかのように、送信されたデータを含む2番目のリクエストがサーバに送信されます。 私の質問を見るコールバック関数にreturn false;を追加する提案がありましたが、これは違いはありませんでした。 e.preventDefault()が若干古くなったiPad/iPhoneでしか動作しないのはなぜですか、それを動作させるには何ができますか?私は最初の場所でフォームを構築するためにjavascriptを使用し、これはまだ古いiosで動作します。

+0

ES6のサポートを参照してください – epascarello

答えて

1

古いosxブラウザでは機能しません。

これは、ES2015(別名「ES6」)で導入されたletを使用しています。古いブラウザでは構文エラーです。最新のブラウザを使用していない場合は、varに変更してください(このコードでは大きな違いはありません)。


私はこのためdupetarget、および there isがあるかもしれません実現が、答えは古くなっています。私は added oneです。

+1

今私は 'ええ、私は'あなたが私を信じるだろうと知っていたと言ったら?私が通常やるバベルを忘れたような小さなプロジェクトでした。ありがとうございました! – leonormes

+0

@leonormes::-)簡単にやりました。私は時には、トランスリングせずにES5に限られたプロジェクトに取り組まなければならなくて、本当に**矢印関数、 'const'、' let'などを導入することに注意しなければなりません。代わりにBabelを追加する)。 –

関連する問題