2012-07-16 69 views
2

小提琴:http://jsfiddle.net/TKWzH/8/兩個「或」事件的條件?

「測試彈出」是該項目的當前功能。 「測試流行2」是我希望我的腳本起作用。但是,實際腳本在點擊執行方面的功能遠遠多於關閉彈出窗口。

有沒有辦法將on enter和on mouseup命令組合成一行?

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

類似的東西就是我在找的東西,但是我希望按鍵只能用於enterkey keyup。正如所寫的,它發生在任何鍵上。

我試圖做到這一點的原因是因爲我想讓表單鍵盤可訪問。從小提琴中可以看出,如果通過鍵盤在Test Pop中導航,則必須在選擇單選按鈕後重新打開對話。

+0

也可以使用空格鍵選擇收音機。 – josh3736 2012-07-16 18:36:16

回答

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)) 

事件一個或多個空間分隔事件類型和可選的命名空間,如 「點擊」 或 「keydown.myPlugin」。

+0

非常感謝!雖然我必須調整它: $(「#popup2 label」)。on('keyup || mouseup',function(event){ if(event.type =='keyup'&& event.which!= 13)return; $('#popup2')。css('display','none'); }); – teeth 2012-07-16 20:17:23

+0

糟糕,固定。 – josh3736 2012-07-16 21:02:48

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'); 
    } 
}); 

可以簡化很多,但只是爲了顯示它是如何做!

+0

有沒有必要做整個'e.keyCode? e.keyCode:e.which'跳舞 - jQuery爲你正常化事件。 – josh3736 2012-07-16 18:35:57

+0

我不想要冗餘代碼,因爲比樣式更改發生更多的事情。這就像一個風格的變化,以及其他一些應該發生在點擊上的功能。 – teeth 2012-07-16 20:15:52