Estou tentando mostrar um contêiner se um campo de entrada obtiver o foco e - esse é o problema real - ocultar o contêiner se o foco for perdido. Existe um evento oposto ao foco do jQuery?
Algum código de exemplo:
<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>
E o que eu gostaria de fazer é algo como isto:
$('#filter').focus_lost(function() {
$('#options').hide();
});
Como isso:
fonte
blur
?Use "desfoque": http://docs.jquery.com/Events/blur#fn
fonte
evento de desfoque: quando o elemento perde o foco.
evento focusout: quando o elemento, ou qualquer elemento dentro dele, perde o foco.
Como não há nada dentro do elemento do filtro, tanto o desfoque quanto o focoout funcionarão neste caso.
jsfiddle com blur: http://jsfiddle.net/yznhb8pc/
jsfiddle com focusout: http://jsfiddle.net/yznhb8pc/1/
fonte
Se as 'Opções Frias' estiverem ocultas da visualização antes do foco do campo, convém criar isso no JQuery em vez de tê-lo no DOM, para que qualquer pessoa que use um leitor de tela não veja informações desnecessárias. Por que eles deveriam ouvi-lo quando não precisamos vê-lo?
Assim, você pode configurar variáveis da seguinte forma:
e depois acrescente (ou acrescente) ao foco
e remova quando o foco terminar
fonte