Как отправить триггер нажатия клавиши с помощью JQuery
Как отправить триггерное нажатие конкретного ключевого кода, например. Событие "9" в TextBox с программным обеспечением JQuery?
Это то, что я намерен делать;
Программно введите значение в TextBox и затем программно запускайте вкладку в TextBox, чтобы выйти из поля.
мой код
$("#tags1").val("comp") // Works well
$("#tags1").trigger("keypress",[9]); // Fails!!
Гаф
Ответы
Ответ 1
В документах jQuery указано, что он будет передавать только нормализованные атрибуты событий = свойства объекта jQuery.Event, которые, как представляется, не включают данные, относящиеся к конкретным событиям.
Я попробовал и не смог заставить его вставлять текст в текстовое поле даже при повторном использовании объекта события, созданного приложением для браузера, поэтому это не представляется возможным.
Почему вы не можете просто изменить значение текстового поля и вызвать blur(), чтобы выйти из него? (Или focus() на том, который вы хотите ввести далее?)
Ответ 2
Не то, что вы просили, но вместо того, чтобы использовать keypress, это может выполнить то, что вы хотите:
$("#tags1").blur();
или даже
$("#tags1").next().focus();
Ответ 3
Try:
$("#tags1").val("comp").trigger("keypress",[9]);
или
$("#tags1").val("comp").trigger("keypress", [{
preventDefault:function(){},
keyCode:9
}]);
Ответ 4
Я создал простой плагин jQuery, который решает эту проблему. Он использует селектор ": tabbable" jQuery UI, чтобы найти следующий элемент "tabbable" и выбирает его.
Пример использования:
// Simulate tab key
$.tabNext();
Ответ 5
Если вы хотите добавить значение к вводу /textarea, тогда запустите событие нажатия клавиши "enter".
Запустите его так:
$('input').val( input_value ).blur();
Ответ 6
Попробуйте следующее:
$('textarea:input').live('keypress', function(e) {
if (e.keyCode == 9) {
e.preventDefault();
// Press TAB to append a string (keeps the original TEXTAREA text).
$(this).append("TAB TAB TAB AFTER TEXTAREA TEXT");
// Press TAB to append a string (keeps the original TEXTAREA text).
$(this).focus().prepend("TAB TAB TAB BEFORE TEXTAREA TEXT");
// Press TAB to replace a all text inside TEXTAREA.
$(this).val("INSERT INTO TEXTAREA / REPLACE EXISTING TEXT");
}
});
Если вы хотите добавить текст внутри текстового поля (с помощью активного курсора - например CTRL + V), вы можете использовать "Tabby" (исходный код JS) (плагин jQuery - 254 строки кода..!).
Вы также можете найти вдохновение в YUI editor, который позволит добавлять TAB внутри редактора.