2017-04-05 10 views
1

フォーム送信を正確に追跡する簡単な方法をお探しです。これは私が現在使っているコードです:GTM - フォーム提出時のファイアタグ(必須フィールドが入力されている場合のみ)

$(function() { 
     $('#form').submit(function() { 
     dataLayer.push({ 
      'event': 'GAEvent', 
      'eventCat': 'Form Submit - Create', 
      'eventAction': 'Form Submit Document', 
      'eventLabel': checked, 
      'eventValue': count, 
      'gaNonInt': false 
     }); 
     }); 
    }); 

問題は、フォームが送信していなくてもタグが発砲していることです。たとえば、誰かが必要なフィールドに入力して送信ボタンをクリックしなかった場合、GTMはクリックを送信として送信すると見なします。すべての必須フィールドが満たされていれば、タグを起動する簡単な方法はありますか?

ありがとうございます。

+0

あなたは、フォームのHTMLと任意のJavaScript検証を投稿することができます。 –

+0

@JoshCronin私は、しかし、フォームは大規模です。 JSバリデーションがどこに保存されているのか分かりません。これらのフォームはDrupal 7コアに統合されています。私はすべての必須フィールドがクラスの命名に「必須」を使用することに気付きましたか?それは何とか使うことができますか? – Kellen

+0

必須の属性を調べるだけでは、問題は完全に解決されません。フィールドにテキストが含まれていてもフォームが送信されないようにするための他の検証ルールが存在する可能性があります。 –

答えて

3

jQueryコードの代わりにGTMs「ネイティブ」サブミットトリガを使用して、「チェック検証」チェックボックスがオンになっていることを確認してください。

フォームのjavascriptの検証では、送信ボタンのデフォルトの動作が抑制され、検証が成功した場合にのみ送信イベントが呼び出されます。 "check validation"オプションが設定されていると、GTMフォームのサブミットトリガーは、デフォルトの動作が妨げられていることを認識し、バリデーター関数がsubmitイベントを呼び出すときにのみタグを起動することができるはずです( "should"と言います。フォーム送信トリガーは必ずしも100%信頼できるわけではありませんが、試してみる価値があります)。

enter image description here

関連する問題