2013-09-24 3 views
0

첫 번째 양식 요소 또는 ".focus"클래스에 초점을 설정해야합니다. 보이는 것이 든 먼저 든.첫 번째 요소를 결정하고 수행하십시오.

이것은 어느 것이 먼저 오는지를 결정하기 위해 각각을 정렬하지 않는 것처럼 보입니까?

이 같이

http://jsfiddle.net/infatti/tdvHJ/1/

$('.focus:visible:first, body:not(:has(.focus:visible)) input:visible:first, body:not(:has(.focus:visible)) textarea:visible:first').focus(); 
+2

없음 초점의 클래스가 없습니다. – j08691

+4

가장 긴 jQuery 선택기! – tikider

+1

길었었다;) – simple

답변

2

이 보이는 모든 입력 요소, 텍스트 영역 요소와 .focus 요소를 찾습니다 : 그것은 또한 그들에 따라 정렬 할 것이다

$('input:visible, .focus:visible, textarea:visible') 

자신의 DOM에서 순서대로 정렬하면 문서의 첫 번째 요소가 jQuery 객체의 첫 번째 요소가됩니다.

$('input:visible, .focus:visible, textarea:visible').eq(0); 

을하고 그것에 초점을 : 처음에 액세스하려면 그냥 발견으로, jQuery를들이 문서에 공간을 차지하면 '볼'로 요소를 고려한다는

$('input:visible, .focus:visible, textarea:visible').eq(0).focus(); 

. 그래서 visibility:hidden 또는 opacity:0을 가진 요소는 여전히 볼 간주됩니다 : 당신의 바이올린의 요소

http://api.jquery.com/visible-selector/

+1

그리고 검색을 제한 할 수있는 방법이있는 경우 OP에 대한 팁만 있으면 속도가 느려지면 선택기의 성능이 향상됩니다. '$ (# container_with_inputs) .find (...)'와 같은 것입니다. –

+0

the : visible이 첫 번째 선택 이었지만 양식의 다른 부분은 ajax 탭에 있기 때문에 "display : none"이므로 가시성이 작동하지 않습니다. – simple

+0

@simple 나는 당신이 말하는 것을 이해하고 있는지 잘 모르겠습니다. ': visible'은'display : none' 요소를 제외시킵니다. – BYossarian

0

시도 http://jsfiddle.net/infatti/tdvHJ/1/

식 (0)의 첫 번째 요소를 선택 ... 에스 수업 초점을 가진 요소가 없으므로 달성하고자하는 일이 무엇인지 확인하십시오. 간단히 입력 요소에 클래스 포커스를 추가 한 다음 우리

$('.focus').focus(); 
+0

나는 이미 가지고있는 것과 같은 결과이다. 텍스트 영역이 첫 번째 일 때 두 번째 입력에 초점을 맞 춥니 다. 첫 번째 요소, 입력 또는 텍스트 영역에 집중해야합니다. – simple

+0

바이올린을보세요. 텍스트 영역에 ".focus"클래스가 있습니까? 그것을 추가하고 어떻게되는지보십시오. – j08691

0

하지 IM :;

$('.focus:visible:first, body:not(:has(.focus:visible)) input:visible:first, body:not(:has(.focus:visible)) textarea:visible:first').eq(0).focus(); 

바이올린)

관련 문제