Имитация удерживая клавишу Ctrl - PullRequest
2 голосов
/ 22 февраля 2012

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

Я нашел простое решение здесь , но это не работает в ie8 (потому что, например, onmousedown не применяется к элементам опции ).

Но я подумал, что можно просто смоделировать нажатую управляющую клавишу всякий раз, когда мышь наводит курсор на мультиселектор:

$(document).ready(function() {
    $('select').hover(function(e) {
        var kde = jQuery.Event("keydown");
        kde.ctrlKey = true;  //something like this
        kde.keyCode = 17;    //or this - i don't know
        $(e.target).trigger(kde);        
    });
});

Почему это не работает?

  • Клавиша Ctrl снова напрямую отпускается?
  • Что-то не так с кодом?
  • Я что-то упускаю полностью?

Ответы [ 2 ]

2 голосов
/ 22 февраля 2012

Вы не можете смоделировать такие события программным нажатием кнопок клавиатуры, так же, как вы не можете получить заглавную букву А, имитируя клавишу shift , пока пользователь нажимает клавишу a на их клавиатуре.Кроме того, даже если он будет работать, он не будет работать: на Mac вы нажимаете cmd , а не ctrl , чтобы выбрать несколько элементов.

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

0 голосов
/ 22 февраля 2012

Вам, вероятно, нужно добавить флажок для каждого из ваших элементов, а не элемент множественного выбора.

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

...