一个提交按钮中有两个onclick功能

时间:2012-10-16 08:50:52

标签: javascript onclick google-analytics

我想使用onclick功能将Google Analytics跟踪事件代码添加到提交按钮,但是那里已经有一个onclick功能。

现有代码

<input name="Submit" type="submit" class="button" style="float:left; clear:both;" onclick="MM_validateForm('name','','R','contact_number','','R','email','','RisEmail','address1','','R','address2','','R');return document.MM_returnValue" value="Submit" />

代码我想添加

onclick="_gaq.push(['_trackEvent', 'Contact Page Enquiry', 'Enquiry', 'Contact Page Enquiry']);"

可以这样做吗?

4 个答案:

答案 0 :(得分:1)

您需要一个回调函数,它将在单击事件中触发两个脚本。

http://jsfiddle.net/gF7Td/2/

答案 1 :(得分:1)

我只是猜测,但是......如果你在返回之前粘贴你的代码怎么办?

答案 2 :(得分:1)

如果您使用的是jQuery,它可以正常工作。您可以在一个元素上拥有多个onclick事件。

检查this

代码

document.getElementById("a").onclick = function() {
   alert(2); //this over writes the onclick on the element. This is called
};

$("#a").click(function() {
    alert(3); //this is called
});​

HTML:

<a id="a" onclick="alert(1)">click</a>​

检查其他问题,例如thisthis

从上面的链接中你可以做到这样的事情:

<input name="Submit" type="submit" class="button" style="float:left; clear:both;" onclick="MM_validateForm('name','','R','contact_number','','R','email','','RisEmail','address1','','R','address2','','R'); _gaq.push(['_trackEvent', 'Contact Page Enquiry', 'Enquiry', 'Contact Page Enquiry']); return document.MM_returnValue" value="Submit" />

这是未经测试的方式。

答案 3 :(得分:0)

需要注意两件事:

  1. 如果表单通过验证,您可能只希望触发_trackEvent调用。
  2. 事件跟踪的工作原理是从分析服务器请求跟踪像素。如果表单提交导致在跟踪请求完成之前将新页面加载到同一窗口,则最终可能会丢失或部分数据收集。
  3. 您可以通过延迟表单提交来解决第二个问题。

    <input id="Submit" name="Submit" type="submit" ... />
    ...
    $('#Submit').click(function(e) {
      // Prevent the default handling of the form submit button
      e.preventDefault();
      MM_validateForm('name', ...
      // If the form didn't validate, don't do anything else
      if (!document.MM_returnValue) return;
      _gaq.push(['_trackEvent', ...
      // Get the form & submit it after 150ms delay
      var form = $(this).parents('form:first');
      setTimeout(function() {form.submit()},150);
    });