2016-08-06 7 views
0

私はフォーム上でGoogleのreCAPTCHAを使用していますが、送信するたびにリセットする必要があります。サーバー側の検証が失敗してユーザーが同じフォームを再送信すると、無効になります。私は平凡なjavascriptを使用していますではなく、 ajax/jqueryを使用して、フォームは新しいページを(現在のものをリロードする代わりに)開きます。ここに私のコードは次のとおりです。submit()が実行された後までフォームのキャプチャをリセットする

document.getElementById('myform').addEventListener('submit', function(event) { 
    event.preventDefault(); 
    this.submit(); 
    setTimeout(function(){ grecaptcha.reset(myCaptcha); }, 0); 
} 

私はイベントループキューにリセットコードを入れてsetTimeoutを使用しています。

私の質問は毎回ですか? submit()は同期していますか?つまり、イベントループキューにあるものの前に常に実行されますか?

答えて

1

はい! hereを参照してください:

JavaScriptは常に同期してシングルスレッドです。ページ上でJavaScriptのコードブロックを実行している場合、そのページ上の他のJavaScriptは現在実行されません。

したがって、この.submit()は、setTime()が実行を開始する前に完了するまで実行されます。

関連する問題