如何使用jQuery触发提交表单

时间:2013-04-23 11:59:50

标签: jquery google-analytics event-tracking analytics.js

我正试图通过Google Universal Analytics跟踪博客帖子的评论。我希望标签能够获取博客文章的名称,因此我正在使用jQuery来激活该事件。

到目前为止,我有以下代码(基于我用于其他网站的代码并且工作正常) - 显然我一定忽略了一些因为它不起作用的代码:

$(document).ready(function(){
   $('#commentform').submit(function(){
     var postname = $('h2.post-title').text();
     ga('send', 'event', 'Engagement', 'Comment', postname, 5);

   });
});

有什么想法吗?

(抱歉,我会链接到博客,但它尚未生效)

由于

2 个答案:

答案 0 :(得分:2)

$(document).ready(function(){
$('#commentform').submit(function(){
var postname = $('h2.post-title').text();
ga('send', 'event', 'Engagement', 'Comment', postname, 5);
});
});

首先。此代码会将h2标记的文本与post-title中的类document分配。获得帖子标题的更可靠方式是id。

其次,它可能无效,因为在Google Analitycs代码触发之前会提交表单。因此,您应该在analitycs完成发送数据后停止默认行为并提交表单。 (见:https://developers.google.com/analytics/devguides/collection/analyticsjs/advanced#hitCallback

$( document ).ready( function() {
    $( document ).on( 'submit', 'form#commentform', function( e ) {
        var postname = $( '#post-title' ).text();
        ga( 'send', {
            'hitType': 'event',
            'eventCategory': 'Engagement',
            'eventAction': 'Comment',
            'eventLabel': postname,
            'eventValue': 5,
            'hitCallback': function() {
                //now you can submit the form
                //$('#commentform').off('submit').trigger('submit');
                $('#commentform').off('submit'); //unbind the event
                $('#commentform')[0].submit(); //fire DOM element event, not jQuery event
            }
        });
        return false;
    });
});

修改 我刚刚意识到hitCallback的代码可能不起作用。修改后的版本应调用DOM元素的事件,并在结果中调用表单。

<强> EDIT2: 更正了事件绑定,以防在触发document.ready()时表单不存在

答案 1 :(得分:0)

很难在不查看实际页面的情况下判断,但浏览器可能会在进行网络呼叫之前重定向到表单的提交。您需要一种等待ga完成的方法,然后完成提交表单。