jQuery를 사용하여 캐럿 (커서) 포커스가있는 입력 요소를 어떻게 얻을 수 있습니까?
즉, 입력에 캐럿의 초점이 있는지 확인하는 방법은 무엇입니까?
jQuery를 사용하여 캐럿 (커서) 포커스가있는 입력 요소를 어떻게 얻을 수 있습니까?
즉, 입력에 캐럿의 초점이 있는지 확인하는 방법은 무엇입니까?
답변:
// Get the focused element:
var $focused = $(':focus');
// No jQuery:
var focused = document.activeElement;
// Does the element have focus:
var hasFocus = $('foo').is(':focus');
// No jQuery:
elem === elem.ownerDocument.activeElement;
어느 것을 사용해야합니까? jQuery 문서를 인용 :
다른 의사 클래스 선택기 ( ":"로 시작하는 선택기)와 마찬가지로 태그 이름이나 다른 선택기가있는 focus를 사용하는 것이 좋습니다. 그렇지 않으면 범용 선택기 ( "*")가 내포됩니다. 즉, 베어는와
$(':focus')
같습니다$('*:focus')
. 현재 초점을 맞춘 요소를 찾고 있다면 $ (document.activeElement)는 전체 DOM 트리를 검색하지 않고도 요소를 검색합니다.
정답은:
document.activeElement
그리고 요소를 래핑하는 jQuery 객체를 원한다면 :
$(document.activeElement)
$focused
var가 jquery 객체임을 나타 내기 위해 $ 접두사 변수 이름을 사용한 방법이 마음 에 듭니다. TYVM.
Firefox, Chrome, IE9 및 Safari에서 두 가지 방법을 테스트했습니다.
(1). $(document.activeElement)
Firefox, Chrome 및 Safari에서 예상대로 작동합니다.
(2). $(':focus')
Firefox 및 Safari에서 예상대로 작동합니다.
마우스로 이동하여 'name'을 입력하고 키보드에서 Enter 키를 누른 다음 초점을 맞춘 요소를 얻으려고했습니다.
(1). $(document.activeElement)
Firefox, Chrome 및 Safari에서 예상대로 input : text : name을 반환하지만 IE9에서는 input : submit : addPassword를 반환합니다.
(2). $(':focus')
Firefox 및 Safari에서 예상대로 input : text : name을 반환하지만 IE에서는 아무것도 반환하지 않습니다.
<form action="">
<div id="block-1" class="border">
<h4>block-1</h4>
<input type="text" value="enter name here" name="name"/>
<input type="button" value="Add name" name="addName"/>
</div>
<div id="block-2" class="border">
<h4>block-2</h4>
<input type="text" value="enter password here" name="password"/>
<input type="submit" value="Add password" name="addPassword"/>
</div>
</form>
이 시도:
$(":focus").each(function() {
alert("Focused Elem_id = "+ this.id );
});
.each
않은 견딜)
이 시도::
$(document).on("click",function(){
alert(event.target);
});