2010-03-12 7 views
9

대부분의 브라우저에서와 마찬가지로 <input type="submit">은 [spacebar]와 [enter]를 클릭으로 처리하지만 <a> 링크는 [enter]를 클릭으로 처리합니다.jQuery - 스페이스 바를 사용하여 링크에서 클릭 이벤트를 트리거 하시겠습니까?

내 앱은 버튼을 시뮬레이션하기 위해 서식 지정된 여러 링크를 사용하므로 버튼으로 탭 이동하고 [스페이스 바]를 누르는 것에 익숙한 사용자는 좌절 할 것입니다. 이 작업을 수행하지 않는 이유가 있나요 :

$("a.Button").die("keypress").live("keypress", function(e) { 
    if (e.which == 32) { 
     $(this).trigger("click"); 
     e.preventDefault(); 
    } 
}); 

내 질문 :

jQuery를이 비트는 문제를 해결? 브라우저의 기본 동작을이 기본 동작처럼 재정의하는 것을 꺼려하지만 링크 태그를 버튼처럼 보이게 만들었으므로 적어도 사용자의 기대를 위반하지는 않습니다. 더욱이.

+0

FWIW 제한된 독자를 대상으로하는 앱입니다. Javascript는이를 사용하기위한 명시된 요구 사항입니다. 지도, 차트, 편집 가능한 그리드 및 기타 시각적 요소 및 대화 형 요소를 많이 사용하므로 화면 판독기를 통해 사용할 수 있도록하는 것이 가능하다는 것은 분명하지 않습니다. –

+0

이것은 href가 'javascript : WebForm_DoPostBackWithOptions (새 WebForm_PostBackOptions ("ctl00 $ main $ uclFind $ uclEntry $ btnGet", "true," ") 요소가있는 ASP.NET 링크 버튼에는 작동하지 않습니다. "", 거짓, 참)) ' –

답변

6

내가 유지하는 가장 중요한 표준은 브라우저의 동작이 아니라 사용자의 예상되는 응답이라고 생각합니다.

버튼으로 전환하여 링크 표시를 재정의 한 경우 사용자는 링크를 실제 버튼처럼 정확하게 처리 할 수 ​​있어야합니다. 그렇지 않으면 사용자를 혼란스럽게하고 자극적으로 만듭니다 이 "배운"행동을하는 년.

0

표준 사용 편의성에 대한 우려 사항이 있습니다.

'모양이 좋아 보인다'는 것이 핵심입니다. 누군가가 스크린 리더를 사용하고 있다면 그들은 링크를보고 적절히 행동 할 것입니다.

다른 사람이 자바 스크립트를 사용하지 않으면 jquery 함수가 실행되지 않고 링크 동작이 발생합니다.

버튼과 같은 링크를 사용하여 이미 영혼 검색 (!)을 완료 했으므로 화면 판독기 및 자바 스크립트가 아닌 두 가지 사례를 처리 할 수 ​​있습니다.

이 두 가지 경우에 대한 단추 동작 (링크)을 시뮬레이트 할 수없는 경우에는 다른 사람에게 다른 경험을 제공하게됩니다. 이는 기능을 사용하지 않는 좋은 이유입니다. 스페이스 바가이 링크/버튼을 사용할 때마다 또는 아무 것도 발사하지 않아야합니다.

+0

몇 가지 이유로 동의하지 않습니다. 1) 표준이 존재한다고해서 그것이 모든 상황에 적용될 필요가 있다는 것을 의미하지는 않습니다. 이 특별한 경우에, 그가 당신의 충고를 따랐다면, 그는 JS에서 탈퇴 한 소수의 사람들보다는 모든 단일 사용자의 예상 응답을 앞서 말할 수 있습니다. 2) 사용자가 * 일부 * 시스템이 아닌 * no * 시스템에서 작업하게한다고 가정합니다. 이것이 클라이언트 측 응용 프로그램의 문제인 것을 알 수 있지만, 웹상의 모든 실제 목적을 위해 웹 페이지는 거의 항상 미묘하게 다른 방식으로 렌더링됩니다. 사용자가 추측하는 경우가 이에 해당합니다. – dclowd9901

+0

충분히 공정하게 - 화면 판독기는 무시해도됩니까? – amelvin

관련 문제