2012-07-16 5 views
2

바이올린 : http://jsfiddle.net/TKWzH/8/두 가지 "또는"이벤트 조건?

"테스트 팝"은 항목의 현재 기능입니다. "Test Pop 2"는 필자의 스크립트가 기능하기를 바란다. 그러나 실제 스크립트에는 팝업을 닫는 것보다 클릭 실행에 더 많은 기능이 있습니다.

on enter와 on mouseup 명령을 하나의 행에 결합하는 방법이 있습니까?

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

내가 찾고있는 것과 비슷한 것이지만 enterkey 키 업용으로 만 키를 사용하고 싶습니다. 그것이 쓰여지는 것처럼, 그것은 어떤 열쇠든지를 위해 일어난다.

내가 이것을하려고하는 이유는 양식 키보드를 액세스 가능하게 만들고 싶기 때문입니다. 바이올린에서 알 수 있듯이 키보드로 Test Pop을 탐색하면 라디오 버튼을 선택한 후 대화 상자를 다시 열어야합니다.

+0

라디오는 스페이스 바를 사용하여 선택할 수도 있습니다. – josh3736

답변

4

그냥 공백을 사용하십시오. docs에서

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

: 예 : "keydown.myPlugin"를 "클릭"또는

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

이벤트 하나 이상의 공백으로 구분 이벤트 유형 및 옵션 네임 스페이스.

+0

고맙습니다. 비록 내가 이것을 다음과 같이 조정해야만 했어도 : $ ("# popup2 label"). ('keyup || mouseup', function (event) { if (event.type == 'keyup'&& event.which! = 13) return; $ ('# popup2') .css ('display', 'none'); }); – teeth

+0

죄송합니다. 고정되어 있습니다. – josh3736

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' dance - jQuery가 이벤트를 정상화합니다. – josh3736

+0

중복 된 코드는 스타일 변경보다 더 많은 일이 발생하기 때문에 원하지 않습니다. 스타일 변경, 클릭 할 때 발생해야하는 몇 가지 다른 기능과 같습니다. – teeth