Как вызвать обратное пространство в текстовом поле?

Скажем, у меня это:

<textarea id="myarea">Hello</textarea>

Как я могу вызвать backspace на этом текстовом поле, используя триггер() и коды клавиш. Код для backspace равен 8. И я не ищу этого:

$('#myarea').val( $("myarea").val().slice(0,-1) );

Мне нужно, чтобы кто-то на самом деле нажал клавишу "backspace" на своей клавиатуре. благодаря

Ответ 1

Вы можете создать событие keydown:

var e = jQuery.Event("keydown", { keyCode: 20 });

Затем запустите его в своем текстовом поле:

$("#myarea").trigger( e );

Обновить:

После проведения еще нескольких исследований и тестирования я понимаю, что это решение НЕ имитирует естественное событие нажатия клавиши для элемента HTML. Этот метод только запускает событие keydown, он не реплицирует пользователя, входящего в элемент, и нажимает этот ключ.

Чтобы смоделировать пользователя, входящего в это текстовое поле, и нажав этот ключ, вам нужно будет создать событие отправки

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

Ответ 2

Я нашел это:

http://forum.jquery.com/topic/simulating-keypress-events (ответ №2).

Что-то вроде этого должно работать или, по крайней мере, дать вам представление:

<div id="hola"></div>

$(function(){
    var press = jQuery.Event("keyup");
    press.ctrlKey = false;
    press.which = 40;

    $('#hola').keyup(function(e){
        alert(e.which);
    })
   .trigger(press); // Trigger the event
});

Демо: http://jsfiddle.net/qtPcF/1/

Ответ 3

Вы не должны заставлять ключевые события в js. Попробуйте имитировать удаление персонажа.

const start = textarea.selectionStart - 1;
const value = textarea.value;
const newValue = value.substr(0, start) + a.substr(start);
textarea.value = newValue;

Или, если вы просто хотите это событие, вместо этого вызовите обработчик напрямую, а не форсируйте событие. Это слишком хаки.