은의 간단한 HTML 입력 필드를 생각해 보자방지 및 onblur 이벤트 occurency 동안
<input type="text" onblur='alert("hello");' />
마우스가이 입력 필드에 당신이 브라우저에서 새 탭을 열 때 (크롬, IE, ...), onblur 이벤트가 트리거되고 있습니다. 그런 방식으로 onblur 이벤트를 트리거하고 싶지 않습니다. 어떻게 이것을 피할 수 있습니까?
은의 간단한 HTML 입력 필드를 생각해 보자방지 및 onblur 이벤트 occurency 동안
<input type="text" onblur='alert("hello");' />
마우스가이 입력 필드에 당신이 브라우저에서 새 탭을 열 때 (크롬, IE, ...), onblur 이벤트가 트리거되고 있습니다. 그런 방식으로 onblur 이벤트를 트리거하고 싶지 않습니다. 어떻게 이것을 피할 수 있습니까?
document.activeElement
을 사용하여 요소가 실제로 DOM에서 포커스를 잃었는지 확인할 수 있습니다. (Browser compatibility도 매우 넓습니다.)
과 같이 할 수 귀하의 코드 :
HTML
<input type="text" onblur='blurred(this);' />
JS
function blurred(elem) {
if (elem != document.activeElement) {
alert("Bye !");
}
}
참조, 또한,이 short demo .
대단히 감사합니다. ExpertSystem, 정말 멋지 네요! – Paramore
'onfocusout()'을 사용할 수 있습니까 ??? – NINCOMPOOP
onfocusout 이벤트는 브라우저에서 완전히 지원되지 않습니다 (아는 한). – Paramore
초점을 잃으려면 다른 것을 클릭해야합니다. 좋은 해결책은 아니지만 클릭에 대해 몸에 청취자를 넣을 수 있습니다. –