Подтвердить что ты не робот

Имитация нажатия клавиш с помощью jQuery

Используя jQuery, как я могу имитировать (триггер?) KeyPress при нажатии ссылки? Например, когда пользователь нажимает следующую ссылку:

<a id="clickforspace" href="#">Click Here</a>

Затем, щелкнув ссылку, было бы так, как будто они нажали "пробел" на своей клавиатуре.

Что-то вроде этого, я предполагаю:

$("#clickforspace").click(function(e) { 
    e.preventDefault(); 
    //... Some type of code here to initiate "spacebar" //
                                      });

Любые идеи о том, как достичь этого?

4b9b3361

Ответ 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);

Из здесь.

Ответ 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);
}