Код работает на консоли, но не на скрипте - PullRequest
1 голос
/ 19 января 2020

Моя проблема в том, что мой код работает на консоли при установке точки останова в указанной строке c, но не работает при запуске сценария или с точкой останова в любой другой строке.

У меня есть поле ввода с прослушивателем keyup, которое запускается даже при вставленных входах, поэтому я пытаюсь разработать решение, которое распознает вставленные вводы и удаляет при этом прослушиватель keyup.

Код хорошо работает в консоли, когда Я установил точку останова в строке, которая удаляет прослушиватель keyup, но она не работает, когда я непосредственно запускаю скрипт на странице или с точкой останова в любой другой строке. Я пытался «DOMContentLoaded», window.load, проверяя «document.readyState», перемещая мои переменные и функции, но все равно ничего не работает.

//Recognizes pasted inputs and calls to remove "Keyup" listener

searchInput.onpaste = function remove() {keyupListener();};


//Removes "Keyup" listener

function keyupListener() {
//Here's where it works when I set a Breakpoint
   searchInput.removeEventListener('keyup', dynamicPagination); 
}

// Keyup listener

searchInput.addEventListener('keyup', () => {
   dynamicPagination();
});

searchButton.addEventListener('click', () => {
   dynamicPagination();
});

Поведение кода, когда он не работает, заключается в том, что он не читает removeEventListener и запускает обработчик keyup с вставленным вводом.

Меня интересуют только ванильные JS решения.

1 Ответ

2 голосов
/ 19 января 2020
//Recognizes pasted inputs and calls to remove "Keyup" listener

var pasted = false;
searchInput.onpaste = function() {pasted=true;};

// Keyup listener
searchInput.addEventListener('keyup', () => {
    if(!pasted) dynamicPagination();
});

searchButton.addEventListener('click', () => {
   if(!pasted) dynamicPagination();
});
//---------------------------------------------------------
Try the below code:- 
//---------------------------------------------------------
<textarea rows=5 cols=50 id=inpt></textarea><button id=btn>buttonn</button>
<div id=dv></div>
<script>
(function(){
var pasted = false;
var searchInput = document.getElementById('inpt');
searchInput.onpaste = function() {pasted=true;};

// Keyup listener
searchInput.addEventListener('keyup', () => {
    if(!pasted) dynamicPagination();
    dv.innerHTML += "<BR>pasted: " + (++dynCnt);
    pasted = false;
});

var searchButton = document.getElementById('btn');
searchButton.addEventListener('click', () => {
   if(!pasted) dynamicPagination();
   dv.innerHTML += "<BR>pasted= " + (++dynCnt);
   pasted = false;
});


var dv = document.getElementById('dv');
dv.innerHTML = "";
var dynCnt = 0;
function dynamicPagination() {
    dv.innerHTML += "<BR>dynamicPagination" + (++dynCnt);
}
})();
</script>
//---------------------------------------------------------
...