Как вызвать событие перед другим на том же элементе, используя родной JS? - PullRequest
0 голосов
/ 04 мая 2020

У меня проблема с eventListener. В моем случае я использую внешнюю библиотеку (jquery .jstree-pre1.0fix2), которая запускает событие blur на входе.

Я делаю то же самое, но мне нужно, чтобы мое событие было запущено раньше, чем событие из библиотеки. Я нашел какое-то решение, но все они использовали jQuery.

У вас есть идея или пример кода с нативным JS, который может помочь мне вызвать мое событие до события из библиотеки?

Ниже приведено событие, которое я хочу провести перед библиотекой:

document.getElementById('treeView').addEventListener("change", function (ev) {
    if(ev.target.classList.contains('jstree-rename-input')) {
        var inputRename = ev.target;
        inputRename.addEventListener("blur", function(eve) {
            eve.value = encodeURI(eve.value);
        });
    }
});

1 Ответ

0 голосов
/ 04 мая 2020

Если вы не можете убедиться, что ваш код находится перед jstree, то вы можете попробовать следующее - не рекомендуется, но следует выполнить работу

const tId = setInterval(function() {
  [...document.querySelectorAll('jstree-rename-input')].forEach(
    inp => inp.value=encodeURI(decodeURI(inp).value)) // make sure we do not double encode
  );
},300)
...