Как отправить триггер нажатия клавиш с помощью JQuery - PullRequest
6 голосов
/ 30 апреля 2009

Как отправить триггерное нажатие клавиши определенного кода, например. Событие "9" в TextBox с использованием JQuery программно?

Это то, что я намерен сделать; Программно введите значение в TextBox, а затем программно активируйте вкладку в TextBox для выхода из поля.

мой код

$("#tags1").val("comp") // Works well

$("#tags1").trigger("keypress",[9]); // Fails!!

Гаф

Ответы [ 6 ]

6 голосов
/ 30 апреля 2009

В документах jQuery утверждается, что он будет передавать только нормализованные атрибуты событий = свойства объекта jQuery.Event, которые, по-видимому, не содержат данных, специфичных для события.

Я пытался и не смог заставить его вставить текст в текстовое поле даже при повторном использовании объекта события, созданного нажатием клавиши браузера, так что это кажется невозможным.

Почему вы не можете просто изменить значение текстового поля и вызвать blur () для его выхода? (Или сфокусироваться () на том, который вы хотите ввести следующим?)

3 голосов
/ 30 апреля 2009

Не совсем то, что вы просили, но вместо нажатия клавиши это может выполнить то, что вы хотите:

$("#tags1").blur();

или даже

$("#tags1").next().focus();
1 голос
/ 11 сентября 2013

Я создал простой плагин jQuery , который решает эту проблему. Он использует селектор «: tabbable» пользовательского интерфейса jQuery, чтобы найти следующий элемент «tabbable» и выбрать его.

Пример использования:

// Simulate tab key
$.tabNext();
1 голос
/ 30 апреля 2009

Попробуйте:

 $("#tags1").val("comp").trigger("keypress",[9]); 

или

   $("#tags1").val("comp").trigger("keypress", [{
    preventDefault:function(){},
    keyCode:9
    }]); 
0 голосов
/ 24 октября 2012

Если вы хотите добавить значение для ввода / текстовой области, тогда вызовите событие ввода «enter».

Запустите это так

$('input').val( input_value ).blur();
0 голосов
/ 15 ноября 2009

Попробуйте это:

$('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 , который позволит вам добавлять вкладки внутри редактора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...