Как вызвать обратное пространство в текстовом поле?
Скажем, у меня это:
<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;
Или, если вы просто хотите это событие, вместо этого вызовите обработчик напрямую, а не форсируйте событие. Это слишком хаки.