2013-10-21 7 views
7

フォームの送信入力に対してonclickイベントにアナリティクスイベントトラッキングを追加しようとしています。フォーム送信時にGoogleアナリティクスイベントを発生させる

私は複数の異なる例を試して、この点に到達するためにいくつかの異なるSOの投稿を参照しました。私はonclickをフォームを送信するか、追跡イベントを発生させることができますが、両方を行うことはできません。

まず例:(送信するフォーム+ログコンソールになく、イベントを発生しません)

<!-- Analytics tracking code --> 

<form action="test.php" id="form" method="post"> 

    <input type="text" name="name" id="name"> 

    <!-- Submits form + logs to console but doesn't fire event --> 

    <input type="submit" name="submit" value="Submit" onclick=" 
     var _this = this; 
     _gaq.push(
      ['_trackEvent', 'Forms', 'Submit', 'Home Contact'], 
      function() { 
       console.log('submitting'); 
       $(_this).parents('form').submit(); 
      } 
     ); 
    "> 

</form> 

第二の例:(火災イベント+コンソールにログが、フォームを送信していません)

最初の例のonclickイベントの最後にfalseを返すと、アナリティクスイベントトラッキングは発生しますが、フォームは送信されません。

答えて

5

は、画像要求のパラメータとして追跡データを、分析サーバから画像を要求することにより、

Googleアナリティクスのデータを記録し(これは本当によくある質問...であることが必要)。 _trackEventまたは_pageViewの直後に現在のウィンドウに新しいページがレンダリングされた場合、画像要求はキャンセルされ、データは記録されません。

通常のパターンは、新しいページを読み込んだり、フォームを送信する前に小さな遅延を追加することです。

<input type="submit" name="submit" value="Submit" onclick=" 
    var _this = this; 
    _gaq.push(['_trackEvent', 'Forms', 'Submit', 'Home Contact']); 
    setTimeout(function() {$(_this).parents('form').submit()}, 150); 
    return false;" 
> 

を試してみてください私の好みは

$('#form').submit(function(e){ 
    e.preventDefault(); 
    _gaq.push(['_trackEvent', 'Forms', 'Submit', 'Home Contact']); 
    var form = this; 
    setTimeout(function(){ form.submit()}, 150); 
}); 
+0

私は1秒のタイムアウト+を持っているために、これを修正が行方不明に追加[Analyticsのコードを押してください。イベントトラッキングは機能しましたが、フォームは送信されませんでした。 – James

+1

入力ミス(setTimeoutに遅延がありません!)が残念です - わずかな遅延が必要ですが、150msが動作するようです。私はまた別の例を加えました。 – mike

+0

私はまだこれを動作させることができません、これらの両方がanalyticsイベントを発生させますが、どちらもフォームを送信しません。私は助けることができませんが、私は何かが明らかに欠けているように感じる。 – James

関連する問題