0

関数をフォーム検証部分に入れて、フォームが有効な場合にのみビーコンが送信されるようにしました。私は何かが欠けていると確信しています。以下のコードを参照してください。

function checkForm() {
    var error = "";
    if($("#first_name").val()=="") { error+="- Enter your first name.\n";};
    if(error=="") {
        _gaq.push(['_trackEvent','Form','Submit','Newsletter']);
        return true;
    } else {
        alert("Please correct these form errors before you submit the form:\n\n"+error)
        return false;
    }
}

編集:助けてくれてありがとう!これをテストしましたが、100ms では十分ではないようです。

今、私はこれをもう少し賢い方法で行うことを考えています。すべての必須フィールドにテキストが入力されたら送信するのは理にかなっていますが、複数回送信してデータが有効な場合にのみ送信するのに十分賢いはずです!

4

2 に答える 2

1

setTimeout() または setInterval() を使用して遅延 (約 100 ミリ秒以下) を与え、GA データが送信されるようにしてください。私のために働いた。

function gaSubmit(param){
_gaq.push(param);
}

function checkForm() {
    var error = "";
    if($("#first_name").val()=="") { error+="- Enter your first name.\n";};
    if(error=="") {
        setTimeout(gaSubmit(['_trackEvent','Form','Submit','Newsletter']),100);
        return true;
    } else {
        alert("Please correct these form errors before you submit the form:\n\n"+error)
        return false;
    }
}
于 2013-11-05T11:36:25.173 に答える