문제

jQuery 대화 상자 위젯을 사용하여 모달 상자를 표시하고 있습니다. 그러나 F5를 누를 때는 모달이 열려있는 동안 새로 고침이 발생하지 않습니다. 아이디어가 있습니까?

흥미로운 업데이트 :

이 데모를 시도하십시오. http://jqueryui.com/demos/dialog/#modal-message이제 "OK"버튼에 초점을 맞추면 새로 고침 (F5)이 작동하지만 버튼에 초점이 맞지 않으면 그렇지 않습니다.

업데이트 2

실제로 대화 상자에 모든 종류의 컨트롤을 추가하고 높이와 너비를 0 CS로 설정하고 새로 고침이 작동하도록 초점을 설정할 수 있습니다. 그래도 이것은 최상의 솔루션이 아닙니다. 나는 여전히 Keypress의 작동을 시도하고 있습니다.

업데이트 3

다음은 현재 작동하는 것 같습니다.

$(document).keydown(function(e)
{
    if (e.which == 116) // key code of the F5 button
    {
        document.location.reload();
     }
}); 
도움이 되었습니까?

해결책

이것은 일반적인 문제인 것처럼 보이며 만족스러운 대답을 보지 못했습니다. 스택 오버플로에 비슷한 질문이 몇 가지 있으며, 내가 본 가장 좋은 대답은 키를 캡처하고 직접 행동을 트리거하는 것입니다 (이것은 버튼을 트리거하는 입력을위한 것이 었으므로 F5에서 새로 고침 할 수 있습니다) 나는 직접 본 것입니다. 저도 작업하고 있습니다.

모달을 거짓으로 설정하면 도움이 될 수 있지만 아직 시도하지 않았습니다.

편집하다:

ui.dialog.js의 539 행에서 이것을 찾았습니다.

events: $.map('focus,mousedown,mouseup,keydown,keypress,click'.split(','),

키 다운과 키 프레스를 제거하면 일반 브라우저 키가 작동하는 것처럼 보였습니다. 이제 내 것 같습니다.

events: $.map('focus,mousedown,mouseup,click'.split(','),

이 작업을 수행하여 어떤 기능을 제거했는지 모르겠습니다. 사용되는 유일한 장소는 549 행에 있습니다.

$(document).bind($.ui.dialog.overlay.events, function(event) {
    var dialogZ = $(event.target).parents('.ui-dialog').css('zIndex') || 0;
    return (dialogZ > $.ui.dialog.overlay.maxZ);
});

가능하면 공식 버전 에서이 문제를 해결하는 것이 좋을 것입니다.

다른 팁

Keypress 이벤트를 캡처하고 'F5'에 대한 전파를 중지하여 대화 상자가 F5 키를 디아링합니까?

이러한 종류의 Keypress 캡처 코드를 확인하십시오. 이것은 많이 설명 할 것입니다!

나는 비슷한 문제가 있었지만 "반환 허위;"를 입력했다는 것을 발견했습니다. 예를 들어, 아래의 "return false"는 XXX 및 YYY를 제외한 다른 모든 키 (F5와 같은)가 인식되는 것을 중지합니다.

$(document).keydown(function(e){
if (e.keyCode == xxx) {/*do something*/}
if (e.keyCode == yyy) {/*do something*/}
return false;
});

그러니 "반환 거짓"을 꺼내십시오.

솔루션은 쉽습니다. 모달 대화 상자의 양식 요소에 집중하면됩니다. 이것에 대한 더 많은 설명 링크 :

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top