2014-03-26 7 views
10

나는 preventDefault()을 시도했지만 성공하지 못했습니다. 내가 누락 된 것이 있습니까?은 HTML의 accesskey = ""가 활성화되지 않도록 할 방법이 있습니까?

나는 가능하면

+0

키 조합은 플랫폼에 따라 다르지만 HTML 액세스 키를 말합니다. –

+1

속성을 제거하지 않는 이유는 무엇입니까? – Teemu

+0

접근성에 영향을 미칠 것이라고 생각합니다 ... 유일한 옵션입니까? –

답변

10

트리거링에서 이벤트를 중지 할 수있는 방법이있을 것 같지 않습니다 (window에 이벤트를 등록 등), 전 세계적으로 사용하지 않도록하려고합니다. 유일한 대안은 액세스 키 속성을 일시적으로 제거하는 것입니다. 그게 뭐야 jQuery UI has to do for modal dialogs.

$("#boxA-dialog").dialog({ 
    autoOpen: false, 
    modal: true, 
    height: 400, 
    width: 300, 
    open: function(event, ui) { 
     ak = $('[accesskey]').each(function() { 
      $(this).data('ak', $(this).attr('accesskey')).removeAttr('accesskey') 
     }) 
    }, 
    close: function(event, ui) { 
     ak.each(function() { 
      $(this).attr('accesskey', $(this).data('ak')) 
     }) 
    } 
}); 

당신이 그들을 제거하기 전에입니다 accesskey jQuery를 데이터 속성을 저장하는 것 볼 수 있듯이 : 데이터에서 그들을 복원 후

$(this).data('ak', $(this).attr('accesskey')).removeAttr('accesskey') 

과 : 여기

는 스레드에서 코드의

$(this).attr('accesskey', $(this).data('ak')) 

나는 이벤트 쥐를 실제로 예방하는 솔루션에 관심이 있습니다. 이 해결 방법을 사용하는 것보다

0

문제를 올바르게 이해하면 시도해 볼 수 있습니다.

$('[accesskey*=]').focus(function(e) { 
    // disable accesskey functionality 
}); 
$('[accesskey*=]').blur(function(e) { 
    // reenable accesskey functionality 
}); 
+0

너무 늦었을 것입니다. 어떤 요소에 초점이 맞았 으면이 시점에서 초점을 잃었을 것입니다. –

0

이전 답변을 사용하면이 트릭을 사용하여 페이지에서 모든 "액세스 키"옵션을 "제거"할 수 있습니다.

$('[accesskey*=]').attr('accesskey',''); 

페이지의 모든 액세스 키를 설정하기 만하면됩니다.

+0

그러나 속성을 복원해야 할 수도 있습니다. –

+0

하지만 그게 무슨 질문에 관한 아니에요. 그래서 그것을 복잡하게 만들 필요가 없습니다. – Amirdev

+0

만약 그들이 제거 될 것이라면, 그들은 처음부터 거기에 있지 않아야합니다. 저는 Wes가 "예방"이라는 단어를 사용했을 때 특정 조건 하에서 만 차단되기를 원하고 그러한 조건이 충족되지 않으면 정상적으로 작동해야한다고 가정합니다. –