Adobe DTM和事件侦听器成倍增加的问题

时间:2018-12-08 07:59:59

标签: javascript adobe addeventlistener adobe-dtm

我有一个表单,我正在尝试使用DTM跟踪表单中的3个选择和3个文本字段。我无法使其正常工作?我首先使用测试代码尝试了基于事件的规则,然后选择按设计工作,直到单击文本字段。第一次单击文本字段时,代码可以正常工作,但是此后任何时候,当我单击带有侦听器的任何元素时,代码都会按比例运行。例如,如果我更改文本字段中的值,则该代码将运行两次。如果随后更改选择,该代码将运行3次,依此类推。我也曾在页面加载规则中尝试过此代码,并且选择功能正常,但文本字段根本不起作用。我不知道如何解决此问题?任何建议表示赞赏。

var employmentStatusSelect = document.getElementById('mainForm:cont');

 employmentStatusSelect.addEventListener('change',trackEmploymentStatusSelect);

  function trackEmploymentStatusSelect (){
        var esSelVal = event.target.value;
        console.log(" event.target.value ==> " + event.target.value);
        if(esSelVal != ""){
        console.log("employmentStatusSelect ==> " + event.target.value);  
    } else {
       console.log("employmentStatusSelect will not report");
    }
    employmentStatusSelect.removeEventListener('change', trackEmploymentStatusSelect);
};

var startCurrentJobInput = document.getElementById('mainForm:cont2');

startCurrentJobInput.addEventListener('blur', trackStartCurrentJobInput);

function trackStartCurrentJobInput(){
    var scjVal = event.target.value;
    console.log(" event.target.value ==> " + event.target.value);
    if(scjVal != ""){
        console.log("startCurrentJobInput ==> " + event.target.value);  
    } else {
       console.log("startCurrentJobInput will not report");
    }
    startCurrentJobInput.removeEventListener('blur', trackStartCurrentJobInput);
};

1 个答案:

答案 0 :(得分:0)

我知道了。由于它是一个事件驱动的规则,因此每次满足规则条件时都会重新加载代码,因此我每次都必须删除所有侦听器。