2014-09-28 3 views
1

여기에 jsFiddle이 있습니다 - http://jsfiddle.net/hL7Lnf3a/3/ - select 드롭 다운 메뉴가 있습니다. 메뉴에서 파일을 선택하면 .change() 처리기가 입력됩니다. 나는 그들이 파일을로드하는 대신에 파일을 선택할 때 사용자가 어떻게 든 나에게 말해 주도록하고 싶다. 메뉴에서 항목을 클릭 할 때 Shift 키를 누르거나 다른 키를 누르거나 항목을 마우스 왼쪽 단추로 클릭하는 대신 마우스 오른쪽 단추를 클릭 할 수도 있습니다. 그러나 브라우저 (크롬을 실행 중)는 .change 이벤트에 대해 이러한 표시를 설정하지 않는 것으로 보입니다. 즉, 변경 이벤트가 발생하면 e.shiftKey 또는 e.which이 이벤트 개체에 설정되지 않습니다. 누구든지 자신이 선택한 파일을로드하거나 삭제할지 여부를 사용자가 알려주도록하는 방법을 알고 있습니까?Select 요소를 클릭 할 때 옵션 전달

고마워요?

답변

1

Shift 키에 대해 다른 수신기 (키 입력 및 키 입력)를 사용할 수 있습니다.

플래그 변수를 사용하여 키를 눌렀는지 여부를 표시 한 다음 변경 리스너에서 플래그 변수의 상태를 간단히 확인하십시오. 이 같은

뭔가 :

var shiftPressed = false; 

$(document).keydown(function(e){ 
    if (e.keyCode == 16) 
     shiftPressed = true; 
}) 

$(document).keyup(function(e){ 
    if (e.keyCode == 16) 
     shiftPressed = up; 
}) 

는 여기를 참조하십시오 http://jsfiddle.net/hL7Lnf3a/5/


사용자 정의 드롭 다운 메뉴와 버전 (와 누른 변화없이 선택 항목을 변경해보십시오) : http://jsfiddle.net/g8ptz2eb/11/

+0

예, 올바른 방향으로 나아갈 수 있습니다. Shift 키의 상태가 드롭 다운을 클릭 할 때 캡처되고 메뉴를 드롭 다운하는 동안 변경할 수 없다는 점이 흥미 롭습니다. 당신은 여기서 더 잘 볼 수 있습니다; http://jsfiddle.net/g8ptz2eb/9/. 사용자가 메뉴가 사라진 후 Shift 키를 눌러서 .change에서 상태를 볼 수 있다면 이상적입니다. – Steve

+0

네, 잘 잡으세요. 저는 브라우저의 영역에 들어가기를 두려워합니다. 따라서 Shift 키는 기술적으로 더 이상 문서 내부에 있지 않지만 상위 레벨에서는 브라우저가 정확하고 브라우저의 선택 상자가 더 정확합니다 (한 번 키보드로 제어 할 수 있음을주의하십시오). 그것은 열리고 초점이있다). 이 기능의 잠재적 인 다른 구현과 관련하여 가능한 브라우저 간 문제가 발생하지 않도록하려면 나만의 간단한 드롭 다운 메뉴를 만들고이 문제에 대해 다시는 걱정하지 않는 것이 좋습니다. – Shomz

+0

어쩌면 이렇게 될지도 모르겠다. http://jsfiddle.net/g8ptz2eb/11/ – Shomz

관련 문제