Как отправить триггер нажатия клавиши с помощью 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 внутри редактора.