jQuery는 초점 이벤트를 잃는다


253

입력 필드에 포커스가 있으면 컨테이너를 표시하려고하는데 실제 문제입니다. 포커스가 손실되면 컨테이너를 숨기십시오. jQuery의 초점에 반대되는 이벤트가 있습니까?

예제 코드 :

<input type="text" value="" name="filter" id="filter"/>

<div id="options">some cool options</div>

<script type="text/javascript">
  $('#options').hide();

  $('#filter').focus(function() {
    $('#options').appear();
  });
</script>

그리고 내가하고 싶은 것은 다음과 같습니다.

$('#filter').focus_lost(function() {
  $('#options').hide();
});

답변:


419

요소가 포커스를 잃을 때 blur 이벤트를 사용 하여 함수를 호출하십시오.

$('#filter').blur(function() {
  $('#options').hide();
});

3
만약 크롬과 같은 브라우저가 텍스트 상자를 채우면, 그것이 blur ()를 유발할 것이라고 생각하지 않습니다
pita

40

이처럼 :

$(selector).focusout(function () {
    //Your Code
});

10
이것과의 차이점은 무엇 blur입니까?
cregox

5
흐림 방법은 초점이 속한 객체를 제거 (즉, 현재가 아닌 상태로 만들기)하는 데 사용됩니다. 텍스트 필드에 흐림 효과를 주면 커서가 다음 필드로 이동합니다. 창에 흐림 효과를 주면 흐림 효과가 다른 유리창 뒤로 흐려집니다. 이것은 예약어가 아니므로 blur라는 고유의 변수 또는 함수를 선언 할 수 있지만이 경우이 메서드를 사용하여 현재 개체를 제어 할 수 없습니다.
SoftwareARM

2
포커스 방법은 포커스가 속한 객체에 포커스를 부여 (즉, 현재로 만들기)하는 데 사용됩니다. 텍스트 필드에 포커스를두면 커서가 해당 필드로 이동합니다. 창에 초점을두면 다른 창들보다 먼저 이동합니다. 포커스가있는 개체를 사용하기 위해 적용 할 특정 개체를 지정하지 않은 작업 이것은 예약어가 아니기 때문에 focus라는 자신의 변수 나 함수를 선언 할 수 있지만이 경우이 메서드를 사용하여 현재 개체를 제어 할 수 없습니다.
소프트웨어

25
SoftwareARM의 설명은 처음 읽었을 때 나에게 의미가 없었으므로 jQuery의 문서 페이지 ( api.jquery.com/focusout )에서 다른 사람들에게 도움이 될만한 다른 설명을 찾았 습니다. 초점 초과 이벤트가 요소로 전송됩니다 그것 또는 그 안의 어떤 요소가 초점을 잃을 때. 이는 부모 요소의 포커스 손실 감지를 지원한다는 점에서 블러 이벤트와 다릅니다 (즉, 이벤트 버블 링을 지원함).
Brad


12

블러 이벤트 : 요소가 포커스를 잃을 때.

포커스 아웃 이벤트 : 요소 또는 그 안의 요소가 포커스를 잃을 때

필터 요소 안에는 아무것도 없으므로이 경우 흐림과 초점이 ​​모두 작동합니다.

$(function() {
  $('#filter').blur(function() {
    $('#options').hide();
  });
})

흐림 효과가있는 jsfiddle : http://jsfiddle.net/yznhb8pc/

$(function() {
  $('#filter').focusout(function() {
    $('#options').hide();
  });
})

포커스 아웃이있는 jsfiddle : http://jsfiddle.net/yznhb8pc/1/


0

'Cool Options'가 필드에 초점을 맞추기 전에 뷰에서 숨겨져 있으면 DOM에서 가져 오는 대신 JQuery에서이를 생성하여 화면 판독기를 사용하는 사람은 불필요한 정보를 볼 수 없습니다. 우리가 그것을 볼 필요가 없을 때 왜들을 수 있어야합니까?

따라서 다음과 같이 변수를 설정할 수 있습니다.

var $coolOptions= $("<div id='options'></div>").text("Some cool options");

그리고 초점에 덧붙이거나

$("input[name='input_name']").focus(function() {
    $(this).append($coolOptions);
});

초점이 끝나면 제거

$("input[name='input_name']").focusout(function() {
    $('#options').remove();
});
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.