2012-12-14 2 views
0

asp.net MVC 프로젝트에 여러 페이지가 있습니다. 각 페이지마다 Tab 키를 설정해야 일부 컨트롤 사이에서만 이동합니다. 나는 설정할 수 있습니다 알고asp.net MVC의 모든 컨트롤에 대해 Tab 키를 사용 안 함

tabIndex=x , x > 0 //to enable 
tabIndex=-1, //to disable 

문제는 나는 그것이 작동하지해야하는 Tab 키를 작동합니다 5 컨트롤과 50 컨트롤 (숫자가 비율을 이해하기 위해 단지이다) 가지고있다. 그래서 전체 페이지 (* .css 또는 관리자에서)에 대해 Tab 키를 사용하지 않도록 설정하고 필요한 특정 컨트롤을 활성화하는 방법이 있는지 궁금합니다.

답변

0

내가 아는 한 이것은 아마도 당신이 원하는대로 직접 할 수 없다는 것을 알고 있습니다. 당신이 덜 0보다으로 설정, 탭 인덱스가 설정되지 않은 모든 요소에 JS 기능을 실행하고 고려할 수 : 명심

var elements = document.querySelectorAll("input:not([tabindex])"); 
for (var i = 0; i < elements.length; i++) { 
    elements[i].tabindex = -1; 
} 

당신이,이 할 수있는 요소의 수에 따라 퍼포먼스에 끌리는 것이므로 벤치마킹을 고려하고 싶을 것입니다.

다른 옵션으로 요소의 탭 인덱스를 사용하지 못하게하는 HTML 도우미 서버 쪽을 만드는 것이 좋습니다. Razor @helper 구문을 사용하여 헬퍼를 로컬로 수행하거나 HtmlHelper 클래스의 확장 메소드를 사용하여 헬퍼를 전역 적으로 수행 할 수 있습니다. 이것은 JS보다 훨씬 뛰어날 수 있지만 시나리오에 따라 조금 무거울 수 있습니다. 탭해서는 안 많은 요소가 존재 이었기 때문에

+0

고마워, 난 당신의 솔루션을 시도 할 것이다. – Laviniux

+0

그들이 도움이되는지/구현을 마무리하는지 알려주세요 :) –

+0

지연된 답변을 드려 죄송합니다. 제안한 첫 번째 솔루션을 구현했지만 성능 문제가 있다고 말했듯이 다른 솔루션을 구현하게되었습니다. 나는 또한 내가 선택한 솔루션을 넣을 것이다, 나는 최선인지 모르겠지만, 그것은 작동합니다 :) – Laviniux

0

대신 또는 그들을 위해 TAB 키를 비활성화, 내가 tabIndex를했다 요소의 기본 동작을 변경, onkey 누르면 :

1) 나는 모든 요소를했다 그 이 tabIndex에게이 0보다 크지 :

var tabbables = document.querySelectorAll("input[tabindex], textarea[tabindex]"); 

이, 당신은 가시성 검사를 단순화 된 버전을해야 내가의 기본 동작을 대체)도 (등 예를 들면 버튼) 요소의 다른 유형

2를 선택한다 2 건 : TAB 프레스 및 탭 인덱스가있는 마지막 요소가 선택되거나 SHIFT + TAB이 눌러지고 첫 번째 요소가 선택됩니다. 이 경우 나는 마지막 요소의 첫 번째 요소에 집중해야했다.

아주 좋은 답변 (하지 허용 대답, 가장 많은 표를 얻은 답)와 비슷한 질문은 여기에 있습니다 : "Focus Next Element In Tab Index"