이런 종류의 상황도 발생했으며이 문제에 대한 해결책을 찾았습니다. 그것은 다른 아이디어의 조합입니다.
1) 모달을 표시 할 때 키보드를 false로 설정하십시오. 코드는 @ravimallya가 제공 한 것입니다.
2) 'esc'키 입력 이벤트를 듣습니다. (난 당신이 또한/키 누름 이벤트를 keyDown을들을 수 있습니다 생각하지만 난의 keyup와 함께 갔다)
var ESCAPE_KEY = 27;
$('#myModal').on('keyup', function (event) {
if (event.which === ESCAPE_KEY) {
$('#myModal').modal('hide');
}
});
3) 나는 또한 그리 명확하지 않았다 모달 기능을 닫습니다 두 번 탈출을 구현 한 [보너스] 그렇게 공유하기로 결정 그것 모두와. 기본적으로 포커스가 select2에 있고 드롭 다운이 열려있을 때 'Esc'를 누르면 select2 드롭 다운이 닫힙니다. 그러나 'Esc'를 다시 누르면 아무 일도 일어나지 않습니다. 두 번째 'Esc'의 동작이 올바르지 만 모달을 닫는 것이 좋습니다. 그래서 여기 내 코드 구현은 다음과 같습니다
$('#mySelect').select2();
var mySelectContainer = $(mySelect).data('select2').container;
$(mySelectContainer).on('keyup', function (event) {
if (event.which === KeyCodes.Escape) {
$('#myModal').modal('hide');
}
});
모달의의 keyup (또는 같은) 핸들러가 'ESC'후 즉시 트리거가 발생하여 이벤트가 작동하지 않습니다 - 가까운 선택 2 듣고 이유는 .
Btw, 많은 keyup/keydown/keypress 이벤트를 구독하는 경우, JQuery HotKeys을 확인해보십시오.이미 사용하고 있다면 위의 해결 방법은 다음과 같습니다.
$('#myModal').on('keyup', null, 'esc', function() {
$('#myModal').modal('hide');
});
답장을 보내 주셔서 감사합니다. 하지만 그건 제가 찾고 있던 것이 아닙니다. keyboard : false는 esc 키 기능을 완전히 비활성화하지만, 열린 select2 드롭 다운에서 esc 키를 누른 후 드롭 다운 만 닫히면 비활성화됩니다. 그러나 esc 키를 눌렀을 때 드롭 다운이 닫히면 모달을 닫는 것이 좋습니다. – mkurz
http://jsfiddle.net/ravimallya/a82RX/14/ 이것이 당신이 달성하기를 원하는 것입니까? '("#m1")을 사용했다. ("select2-close", function() { $ ('# myModal') 모달 ('hide'); })' 선택 요소에서 옵션을 선택하십시오. 얻을 수있는 select2의 [events] (http://ivaynberg.github.io/select2/select2-latest.html#events)를 부트 스트랩 모달 자바 스크립트와 결합 할 수 있습니다. – Ravimallya
아니, 내가 원하는 건 아니야. 어쩌면 나는 충분히 명확하게 설명하지 않았다 (나는 영어로 출신이 아니다). "드롭 다운이 열려 있고 esc를 치면 드롭 다운 만 닫아야하지만 모달은 열어 두어야합니다."라고 나는 이렇게 반대합니다. 어쨌든 당신의 노력에 감사드립니다. – mkurz