Два или условия для события?

Скрипт: http://jsfiddle.net/TKWzH/8/

«Test Pop» — это текущая функция предмета. «Test Pop 2» — это то, как я хотел бы, чтобы мой сценарий функционировал. Однако реальный скрипт имеет гораздо больше функций при выполнении щелчка, чем просто закрытие всплывающего окна.

Есть ли способ объединить команды ввода и мыши в одну строку?

$("#popup2 label").on('keyup || mouseup', function (event) {
    $('#popup2').css('display', 'none');
});

Что-то вроде этого я ищу, но я хочу, чтобы ключ функционировал только для ввода клавиши ввода. Как то написано, это происходит для любого ключа.

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


person teeth    schedule 16.07.2012    source источник
comment
Радио также можно выбирать с помощью пробела.   -  person josh3736    schedule 16.07.2012


Ответы (2)


Просто используйте пробел.

$("#popup2 label").on('keyup mouseup', function (e) {
    if (e.type == 'keyup' && e.which != 13) return;
    $('#popup2').css('display', 'none');
});

Из документов:

 .on( events [, selector] [, data], handler(eventObject) )

события Один или несколько разделенных пробелом типов событий и необязательных пространств имен, например "click" или "keydown.myPlugin".

person josh3736    schedule 16.07.2012
comment
Спасибо, это отлично работает! Хотя мне пришлось настроить его следующим образом: $(#popup2 label).on('keyup || mouseup', function (event) { if (event.type == 'keyup' && event.what != 13) return; $('#popup2').css('display', 'none'); }); - person teeth; 17.07.2012

$("#popup2 label").on('keyup mouseup', function (e) {
    if (e.type==='keyup') { //key was pressed
        var code = (e.keyCode ? e.keyCode : e.which);
        if(code == 13) { //Enter was pressed
            //Do something
            $('#popup2').css('display', 'none');
        }
    }else{
        //mouseup was the trigger
        $('#popup2').css('display', 'none');
    }
});

можно сильно упростить, но просто показать как это делается!

person adeneo    schedule 16.07.2012
comment
Нет необходимости делать весь e.keyCode ? e.keyCode : e.which танец — jQuery нормализует события за вас. - person josh3736; 16.07.2012
comment
Я не хочу избыточного кода, потому что происходит гораздо больше, чем изменение стиля. Это похоже на изменение стиля и несколько других функций, которые должны выполняться по клику. - person teeth; 17.07.2012