Как имитировать событие 'change keyup'

119
02 декабря 2020, 03:20

Имею код, которые срабатывает на событие on('change keyup'. Нужно имитировать это событие, чтобы запустить этот код. Пробовала через триггер, понимаю, что он должен работать в связке с bind, но и вызов через него событие не видит. Да и менять EventListener не хотелось бы совсем. Есть ли возможность имитировать событие нажатия на клавиши?

$('#foo').on('change keyup', function(){ 
  alert('Произошло событие change keyup') 
}); 
 
window.onload = function(e){      
  function writeText(){ 
    $('#foo').trigger('change keyup'); 
  } 
  setTimeout(writeText, 500); 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
 
<input type="text" id="foo" value="123">

Answer 1

Нужно одно событие в trigger передавать. Так работает:

$('#foo').on('change keyup', function(){ 
  alert('Произошло событие change keyup') 
}); 
 
window.onload = function(e){      
  function writeText(){ 
    $('#foo').trigger('change'); 
  } 
  setTimeout(writeText, 500); 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
 
<input type="text" id="foo" value="123">

Answer 2

Нет такого события 'change keyup', есть два события 'change' и 'keyup', которые вы просто определили одновременно в конструкции on; и в trigger их вызывать следует отдельно, например:

$('#foo').on('change keyup', function(){ 
  alert('Произошло событие change keyup') 
}); 
 
window.onload = function(e){      
  function writeText(){ 
    $('#foo').trigger('change'); // тут вызываем или change или keyup 
  } 
  setTimeout(writeText, 500); 
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
 
<input type="text" id="foo" value="123">

Answer 3

$(document).ready(function(){ 
  $("#inp").trigger({type: 'input', which: 13, keyCode: 13}); 
}); 
 
$("#inp").on('input',function(){ 
  alert("123"); 
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script> 
<button id="btn">test</button> 
<input type="text" id="inp" />

READ ALSO
RAII для параметра-дескриптора

RAII для параметра-дескриптора

В этой теме уже рассматривалась техника оборачивания WinAPI функций в unique_ptr, однако у меня возник вопрос как это должно реализовываться в функциях,...

147
std::vector из std::mutex. Как реализовать

std::vector из std::mutex. Как реализовать

Нужно сделать вектор со структурой, содержащей вектор из структур, содержащих мьютекс

122
с++ не работает условие

с++ не работает условие

цикл while срабатывает и при значениях j больше размера массива

130
Одновременно не выводятся оба QLineSeries

Одновременно не выводятся оба QLineSeries

В данном фрагменте кода я пытаюсь вывести некий график с двумя SeriesДля более быстрого вывода я удаляю, заполняю Series и затем добавляю их обратно

101