Имитация нажатия клавиш с помощью jQuery
Используя jQuery, как я могу имитировать (триггер?) KeyPress при нажатии ссылки? Например, когда пользователь нажимает следующую ссылку:
<a id="clickforspace" href="#">Click Here</a>
Затем, щелкнув ссылку, было бы так, как будто они нажали "пробел" на своей клавиатуре.
Что-то вроде этого, я предполагаю:
$("#clickforspace").click(function(e) {
e.preventDefault();
//... Some type of code here to initiate "spacebar" //
});
Любые идеи о том, как достичь этого?
Ответы
Ответ 1
Событие keypress из jQuery предназначено для выполнения такого рода работ. Вы можете инициировать событие, передав строку "keypress" в .trigger(). Однако, чтобы быть более конкретным, вы можете фактически передать объект jQuery.Event(указать тип как "keypress" ) и предоставить любые необходимые вам свойства, такие как код ключа, который является пробелом.
http://docs.jquery.com/Events/trigger#eventdata
Прочтите приведенную выше документацию для более подробной информации.
Ответ 2
Я считаю, что это то, что вы ищете:
var press = jQuery.Event("keypress");
press.ctrlKey = false;
press.which = 40;
$("whatever").trigger(press);
Из здесь.
Ответ 3
Другая опция:
$(el).trigger({type: 'keypress', which: 13, keyCode: 13});
http://api.jquery.com/trigger/
Ответ 4
Вы можете попробовать этот плагин SendKeys jQuery:
http://bililite.com/blog/2011/01/23/improved-sendkeys/
$(element).sendkeys(string)
вставляет строку в точке вставки в вход, textarea или другой элемент с contenteditable = true. Если точка ввода в данный момент не находится в элементе, она запоминает, где точкой вставки было, когда последний раз были вызваны sendkeys (если точка вставки никогда не была в элементе, она добавляется к концу).
Ответ 5
Это работает:
var event = jQuery.Event('keypress');
event.which = 13;
event.keyCode = 13; //keycode to trigger this for simulating enter
jQuery(this).trigger(event);
Ответ 6
Если вы хотите имитировать действия браузера как "отменить" или "повторить", вы должны попробовать следующее:
function doUndo(){
document.execCommand('undo', false, null);
}
function doRedo(){
document.execCommand('redo', false, null);
}