Adobe DTM 和事件侦听器倍增问题
Adobe DTM and Event Listeners Multiplying Issue
我有一个表单,我正在尝试使用 DTM 跟踪表单中的 3 个 select 和 3 个文本字段。我无法让它正常工作?我首先使用我的测试代码尝试了一个基于事件的规则,并且 selects 按设计工作,直到我单击一个文本字段。第一次单击文本字段时,代码工作正常,但此后任何时候,当我单击带有侦听器的任何元素时,代码 运行s 都会按比例显示。例如,如果我更改文本字段中的值,该代码将 运行 两次。如果我然后更改 select,该代码将 运行 3 次等。我还在页面加载规则中尝试过此代码并且 selects 工作正常但文本字段不根本不起作用。我不知道如何解决这个问题?任何建议表示赞赏。
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);
};
我想通了。由于它是一个事件驱动的规则,每次满足规则条件时代码都会重新加载,因此我每次都必须删除所有侦听器。
我有一个表单,我正在尝试使用 DTM 跟踪表单中的 3 个 select 和 3 个文本字段。我无法让它正常工作?我首先使用我的测试代码尝试了一个基于事件的规则,并且 selects 按设计工作,直到我单击一个文本字段。第一次单击文本字段时,代码工作正常,但此后任何时候,当我单击带有侦听器的任何元素时,代码 运行s 都会按比例显示。例如,如果我更改文本字段中的值,该代码将 运行 两次。如果我然后更改 select,该代码将 运行 3 次等。我还在页面加载规则中尝试过此代码并且 selects 工作正常但文本字段不根本不起作用。我不知道如何解决这个问题?任何建议表示赞赏。
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);
};
我想通了。由于它是一个事件驱动的规则,每次满足规则条件时代码都会重新加载,因此我每次都必须删除所有侦听器。