Adobe DTM и проблема умножения прослушивателей событий

У меня есть форма, и я пытаюсь отслеживать 3 выбора в форме и 3 текстовых поля, используя DTM. Я не могу заставить его работать должным образом? Сначала я попробовал правило, основанное на событиях, с моим тестовым кодом, и выборки работают так, как задумано, пока я не нажму на текстовое поле. Первый раз, когда я нажимаю на текстовое поле, код работает нормально, но потом, когда я нажимаю на любой элемент со слушателем, код работает пропорционально. Например, если я изменю значение в текстовом поле, этот код будет выполнен дважды. Если я затем изменю выбор, этот код будет выполняться 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 ответ

Решение

Я понял это. Так как это правило, управляемое событиями, код перезагружается каждый раз, когда критерии правила выполнены, поэтому мне приходится каждый раз удалять всех слушателей.

Другие вопросы по тегам