两个"或"事件的条件?

时间:2012-07-16 18:18:13

标签: jquery button click radio mouseup

小提琴:http://jsfiddle.net/TKWzH/8/

“测试弹出”是项目的当前功能。 “Test Pop 2”是我希望我的剧本能够发挥作用的。但是,实际脚本在单击执行上的功能要比关闭弹出窗口要多得多。

有没有办法将on enter和on mouseup命令合并为一行?

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

这样的东西就是我正在寻找的,但我希望密钥只能用于enterkey keyup。如上所述,它适用于任何密钥。

我尝试这样做的原因是因为我想让表单键盘可访问。从小提琴中可以看出,如果您使用键盘浏览Test Pop,则必须在选择单选按钮后重新打开对话框。

2 个答案:

答案 0 :(得分:4)

只需使用空格。

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

来自docs

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

事件一个或多个空格分隔的事件类型和可选命名空间,例如“click”或“keydown.myPlugin”。

答案 1 :(得分:0)

$("#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');
    }
});

可以简化很多,但只是为了展示它是如何完成的!