2016-04-08 18 views
1

私が欲しいもの:
フォームが送信されると、「注文処理」要素が表示されます。要素がiOSフォームに表示されない

私が何をしたか

私が経験してる何

$("#register").validate({ 
    errorPlacement: function(error, element) { }, 
    submitHandler: function(form) { 
    $('.processing-wrapper').removeClass('hidden'); 
    form.submit(); 
    } 
}); 

:期待通りに物事が動作するデスクトップで

私が試したもの:

  • を私はform.submitをコメントアウト(); 「注文処理」要素がiOSに表示されるかどうかを確認するだけです。しかし、フォームが提出されると、私は決して処理要素を見ません。
  • フォームの提出を遅らせるためにsetTimeoutを追加してみましたが、「注文処理」要素がiOSに表示されるまでに時間がかかりますが、実際にフォームを送信するのに問題がありました。このアップデートにより、タイムアウト

    $("#register").validate({ 
        errorPlacement: function(error, element) { }, 
        submitHandler: function(form) { 
        $('.processing-wrapper').removeClass('hidden'); 
        setTimeout(function(form) { 
         form.submit(); 
        }, 2500); 
        } 
    }); 
    

    で更新

私は「注文処理」の要素を参照してくださいだけでなく、エラーのですか「TypeError例外を:プロパティを読み取ることができません未定義の 『提出』」

要約:

  • 任意のアイデアなぜそれ番目e「注文処理」要素がiOSに表示されませんか?
  • setTimeoutを実際に動かすための提案はありますか?

正しい方向に私を指差してくれれば助かります。

答えて

1

タイムアウトメソッドを使用すると、あるformパラメータを受け入れるように無名関数を設定しているので、しかし、あなたがエラーを取得している、正しい修正オーバー乗っので、外側のスコープのformとnullであるが、エラー。ちょうどそのパラメータを削除し、それが正常に動作する必要があります:タイマ遅延が大幅に短くすることができるという

$("#register").validate({ 
    errorPlacement: function(error, element) { }, 
    submitHandler: function(form) { 
     $('.processing-wrapper').removeClass('hidden'); 
     setTimeout(function() { // no parameter here 
      form.submit(); 
     }, 50); 
    } 
}); 

注意を、私は私の例では50ミリ秒に減少しました。送信が行われる前にクラスを削除する呼び出しが行われるようにするだけで、UIに更新の機会が与えられます。

+0

これは非常に役に立ちます、ありがとう! iOSがクラスを削除して同時にフォームを送信できないことを明確にするには?送信が行われると、iOSはUIをフリーズしますか? – michaelespinosa

+1

UIがフリーズするのではなく、新しいページの読み込み要求が実行されたときに現在のページへの呼び出しに応答しなくなります。 –

関連する問題