2013-04-23 21 views
2

我试图通过Google Universal Analytics跟踪博客文章的评论。我希望标签获取博客文章的名称,以便使用jQuery来引发该事件。如何使用jQuery触发提交表单

到目前为止,我有以下代码(这是基于我的代码用于其他网站和做工精细) - 很明显,我必须忽视的东西,因为它是不工作:

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

    }); 
}); 

有什么想法?

(对不起,我会链接到博客,但它不活还)

感谢

+1

回报虚假的形式不存在; – ElSinus 2013-04-23 12:01:33

+2

你有什么错误?什么是问题?只是不工作? – 2013-04-23 12:03:04

+0

我认为问题在于页面正在刷新 – 2013-04-23 12:04:39

回答

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

首先。此代码将h2标记的文本与document中的post-title类别相关联。一种更可靠的方式来获得该职位的标题将是一个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()被触发GA(...)后

+0

感谢MythThrazz - 我复制/粘贴了您发布的内容,但仍然无法正常工作。我没有收到任何错误消息,只是没有代码解雇。我应该添加一些东西吗? (我在h2中添加了id) – vikki 2013-04-23 13:22:51

+0

我忘了提及那是jQuery 1.9+的代码你可以使用它吗?还有哪些代码不会触发?事件回调还是hitCallback? – MythThrazz 2013-04-23 13:37:50

+0

是的,该网站使用jQuery 1.9 - 事件不发射 – vikki 2013-04-23 13:44:54

0

很难说没有看一个实际的页面,但可能是浏览器之前,GA的重定向到表单的提交网络电话进行。您需要一种方法来等待ga完成,然后完成提交表单。

+0

Pre-Universal Analytics之前,您必须在提交活动后添加延迟。借助Universal Analytics,您可以指定在发送数据后运行的[hitCallback](https://developers.google.com/analytics/devguides/collection/analyticsjs/advanced#hitCallback)。 – mike 2013-04-23 14:06:03