简体   繁体   English

使用JavaScript添加一个OnClick事件

[英]using javascript to add an OnClick event

I am trying to find a way to make classes that cause onclick events. 我试图找到一种方法来创建导致onclick事件的类。 So say for example in a form. 因此,例如以一种形式说。 I want to give that form field a class. 我想给该表单字段一个类。 Every time I add a certain class to a field I want it to generate an onclick command to the form field. 每次我将某个类添加到字段时,我都希望它为表单字段生成一个onclick命令。

The reason I am doing this is I want to add analytic tracking to each form field, but I am using gravity forms so I want to be able to create forms on the fly without editing each one. 我这样做的原因是我想向每个表单字段添加分析跟踪,但是我使用的是重力表单,因此我希望能够在不编辑每个表单的情况下即时创建表单。 If I could create a class called .name and have that class add this onClick="mixpanel.track('Name_field');" 如果可以创建一个名为.name的类,并让该类添加此onClick="mixpanel.track('Name_field');" to the form input, then I could track everytime a user clicks inside the form to fill it out. 到表单输入,然后我可以跟踪用户每次在表单内单击以填写表单时的情况。 This way I could track each step of the form and see when users leave. 这样,我可以跟踪表单的每个步骤,并查看用户何时离开。

So list would be 所以清单是

.name  that would add onClick="mixpanel.track('Name_field');"
.email  that would add onClick="mixpanel.track('Email_field');"
.phone  that would add onClick="mixpanel.track('pnone_field');"

I hope that makes sense. 我希望这是有道理的。 Thanks for any help you can give. 谢谢你提供的所有帮助。 I am fairly new to javascript so please be easy on me. 我对javascript很陌生,所以请对我轻松一点。 html and css I am a pro but javascript is my next mountain to climb. html和css我是专业人士,但javascript是我的下一个攀登之路。

It would be far more efficient to delegate so you only have one event handler: 委派效率会高得多,因此只有一个事件处理程序:

var f = function (e) {
  e = e || window.event;
  var t = e.srcElement || e.target, m;
  while (t !== this && (!t.className || !(m = t.className.match(/\b(name|email|phone)\b/)))) {
    t = t.parentNode;
  }
  if (m) {
    switch (m[0]) {
      case "name": mixpanel.track("Name_field"); break;
      case "email": mixpanel.track("Email_field"); break;
      case "phone": mixpanel.track("phone_field"); break;
    }
  }
};
if (document.body.attachEvent) {
  document.body.attachEvent("onclick", f, true);
} else {
  document.body.addEventListener("click", f, true);
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM