web-dev-qa-db-ja.com

Googleタグマネージャーを使用して外部URLにリダイレクトするサブスクリプションフォームを追跡する

Googleタグマネージャーを使用して確認ページでイベントをトリガーすることで現在追跡しているGravity Formサブスクリプションフォームがあります。ただし、すぐにこのフォームは、URLに渡されたいくつかのパラメーターを使用して、別のドメインのページにリダイレクトされます。つまり、代わりに送信時にイベントを追跡する必要があります。フォーム送信リスナー、クリックリスナー、リンククリックリスナーを試しましたが、何も動作しないようです。間違ったid/classを取得している可能性があると思います。また、フォームが検証された後にのみイベントがトリガーされるようにします。完全なフォームコードは次のとおりです。

<div class="gf_browser_ie gf_browser_ie8 gform_wrapper" id="gform_wrapper_1">
<form method="post" enctype="multipart/form-data" id="gform_1" action="/">
    <div class="gform_body">
        <ul id="gform_fields_1" class="gform_fields top_label description_below">
            <li id="field_1_2" class="gfield">
                <label class="gfield_label" for="input_1_2">Name</label>
                <div class="ginput_container">
                    <input name="input_2" id="input_1_2" type="text" value="" class="large" tabindex="1">
                </div>
            </li>
            <li id="field_1_1" class="gfield">
                <label class="gfield_label" for="input_1_1">Email</label>
                <div class="ginput_container">
                    <input name="input_1" id="input_1_1" type="email" value="" class="large" tabindex="2">
                </div>
            </li>
            <li id="field_1_3" class="gfield     gform_hidden">
                <input name="input_3" id="input_1_3" type="hidden" class="gform_hidden" value="17/07/2014">
            </li>
            <li id="field_1_4" class="gfield     gform_hidden">
                <input name="input_4" id="input_1_4" type="hidden" class="gform_hidden" value="Home">
            </li>
            <li id="field_1_5" class="gfield     gform_hidden">
                <input name="input_5" id="input_1_5" type="hidden" class="gform_hidden" value="http://example.com/">
            </li>
        </ul>
    </div>
    <div class="gform_footer top_label"> 
        <input type="submit" id="gform_submit_button_1" class="button gform_button" value="Submit" tabindex="3" onclick="if (window[ & quot; gf_submitting_1 & quot; ]){return false; }  if (!jQuery( & quot; #gform_1 & quot; )[0].checkValidity || jQuery( & quot; #gform_1 & quot; )[0].checkValidity()){window[ & quot; gf_submitting_1 & quot; ] = true; }"> 
        <input type="hidden" class="gform_hidden" name="is_submit_1" value="1"> 
        <input type="hidden" class="gform_hidden" name="gform_submit" value="1"> 
        <input type="hidden" class="gform_hidden" name="gform_unique_id" value=""> 
        <input type="hidden" class="gform_hidden" name="state_1" value="WyJbXSIsImYzNmQxM="> 
        <input type="hidden" class="gform_hidden" name="gform_target_page_number_1" id="gform_target_page_number_1" value="0"> 
        <input type="hidden" class="gform_hidden" name="gform_source_page_number_1" id="gform_source_page_number_1" value="1"> 
        <input type="hidden" name="gform_field_values" value="">
    </div>
</form>
jQuery(document).ready(function(){jQuery(document).trigger('gform_post_render', [1, 1]) }); 
2
dasickle

肯定的な検証でのみイベントを呼び出すことは、検証スクリプト内で呼び出す必要があることを意味します。

個人的には、検証のインラインonclickメソッドを取り除き、代わりにjQueryを介してそれを行います。

$( "#gform_1" ).submit(function( event ) {
   // Your validation script here
});

これは、より整頓されたコードであり、あなたがしていることを読みやすくします。

その後、検証の一部としてGoogleアナリティクスイベントを呼び出すことができます(つまり、肯定的な検証がtrueを返す前に送信しますが、falseを返す場合は呼び出しません)。

1
Richard B