2009-09-14 27 views
239

Próbuję pokazać kontener, jeśli pole wejściowe dostaje fokus i - to jest faktyczny problem - ukryj kontener, jeśli fokus zostanie utracony. Czy w przypadku jQuery'ego jest przeciwne wydarzenie?jQuery traci fokus zdarzenia

Niektóre przykładowy kod:

<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> 

A co chciałbym zrobić coś takiego:

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

Odpowiedz

398

Zastosowanie blur wydarzenie nazwać swoją funkcję, gdy elementem traci fokus:

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

co jeśli przeglądarka jak chrome auto wypełnia pole tekstowe, nie sądzę, że wywoła to rozmycie() – pita

38

Jak to:

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

jaka jest różnica od tego do 'bl ur'? – cregox

+5

Metoda rozmycia służy do usuwania fokusu (tj. Zmiany koloru) obiektu, do którego należy. Podanie pola tekstowego nieostrości przesunie kursor do następnego pola. Nadanie rozmycia okna spowoduje przesunięcie go poza wszystkie pozostałe. To nie jest zarezerwowane słowo, więc możesz zadeklarować własną zmienną lub funkcję o nazwie blur, ale jeśli to zrobisz, nie będziesz mógł użyć tej metody do kontrolowania, który obiekt jest aktualny. – SoftwareARM

+2

Metoda ustawiania ostrości służy do nadania fokusowi (tj. Uczynienia bieżącym) obiektu, do którego należy. Podając pole tekstowe, fokus przesunie kursor na to pole. Nadanie fokusowi okna przesunie go przed wszystkimi innymi. Działania, które nie określają konkretnego obiektu do zastosowania, który ma fokus.Nie jest to słowo zastrzeżone, więc możesz zadeklarować własną zmienną lub funkcję o nazwie focus, ale jeśli to zrobisz, nie będziesz mógł użyć tej metody do kontrolowania, który obiekt jest aktualny. – SoftwareARM

7

zdarzenie rozmycia: gdy element traci fokus.

fokus:, gdy element lub jakikolwiek jego element w środku traci ostrość.

Ponieważ nic nie znajduje się w filtrze, w tym przypadku zadziałają zarówno rozmycie, jak i fokus.

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

jsfiddle z rozmycia: http://jsfiddle.net/yznhb8pc/

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

jsfiddle z focusOut: http://jsfiddle.net/yznhb8pc/1/

+0

To powinna być zaakceptowana odpowiedź –

0

jeśli 'Super Opcje' są ukryte przed wzrokiem przed pole skupia się wtedy chcesz utworzyć to w JQuery zamiast mieć go w DOM, więc każdy, kto używa czytnika ekranu, nie zobaczy niepotrzebnych informacji. Dlaczego mieliby go słuchać, gdy nie musimy tego oglądać?

Więc może zmienne konfiguracyjne tak:

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

a następnie dołączyć (lub poprzedzić) na ostrości

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

a następnie usunąć, gdy ostrość kończy

$("input[name='input_name']").focusout(function() { 
    $('#options').remove(); 
}); 
Powiązane problemy