Как я могу сгенерировать событие keyup с определенным кодом в IE8? - PullRequest
6 голосов
/ 22 сентября 2011

Мне нужно генерировать события keyup в IE 8, используя встроенные функции DOM (без jQuery).Следующий код генерирует, запускает и получает событие, но keyCode всегда равен 0. Как правильно передать keyCode?

<form><input id="me" type="submit" /></form>

<script type="text/javascript">
var me = document.getElementById("me");
me.attachEvent("onkeyup", function(e) {
  alert(e.keyCode); // => 0
});

document.getElementById("me").fireEvent('onkeyup', 13);
</script>

Ответы [ 2 ]

11 голосов
/ 23 сентября 2011

Разобрался. Решение состоит в том, чтобы создать объект события, назначить код ключа и запустить его с узла.

var e = document.createEventObject("KeyboardEvent");
e.keyCode = keyCode;

node.fireEvent("onkeyup", e);
0 голосов
/ 22 сентября 2011
e = e || window.event;
keycode = e.keyCode || e.which;

Это заставит события работать во всех браузерах. Кроме того, я предпочитаю использовать me.onkeyup = function(e) { ... }, но это «просто личное предпочтение (я знаю недостатки этого метода, но у меня есть умные способы обойти их)

...