W HTML5 search
typ wejścia pojawia się z małym X po prawej stronie, co wyczyści pole tekstowe (przynajmniej w Chrome, może inne). Czy istnieje sposób wykrycia kliknięcia tego X w JavaScript lub jQuery inny niż, powiedzmy, wykrywanie kliknięcia pola w ogóle lub wykrywanie kliknięć w lokalizacji (pozycja x / pozycja y)?
javascript
jquery
html
events
dom-events
Jason
źródło
źródło
onchange
zdarzenia?Odpowiedzi:
W rzeczywistości istnieje zdarzenie „wyszukiwania”, które jest wywoływane za każdym razem, gdy użytkownik przeprowadza wyszukiwanie lub gdy klika znak „x”. Jest to szczególnie przydatne, ponieważ rozumie atrybut „przyrostowy”.
Powiedziawszy to, nie jestem pewien, czy potrafisz odróżnić kliknięcie „x” od wyszukiwania, chyba że użyjesz metody „onclick”. Tak czy inaczej, mam nadzieję, że to pomoże.
źródło
search
wydarzy się coś innego niż kliknięcie „x”. Nie wydaje się, aby strzelaćkeyup
,blur
lub gdy tworzą to w jest złożony. Ale to zasługuje na zaznaczenie jako odpowiedź.search
Wydarzenie powinno ognia, gdy użytkownik naciśnieEnter
. A jeśli pole wyszukiwania maincremental
atrybut, uruchomi się również, gdy użytkownik przestanie pisać na sekundę.input
zdarzenie, ale niesearch
zdarzenie.Bind
search
-event the search box as this poniżej-źródło
Chcę dodać „późny” odpowiedź, bo z trudem
change
,keyup
isearch
dzisiaj, a może co znalazłem w końcu mogą być użyteczne dla innych też. Zasadniczo mam panel wyszukiwania jako typ i chciałem tylko odpowiednio zareagować na nacisk małego X (pod Chrome i Opera, FF go nie implementuje) i wyczyścić okienko treści.Miałem taki kod:
(Są oddzielne, ponieważ chciałem sprawdzić, kiedy iw jakich okolicznościach każdy został wezwany).
Okazuje się, że Chrome i Firefox reagują inaczej. W szczególności Firefox traktuje
change
„każdą zmianę danych wejściowych”, podczas gdy Chrome traktuje to jako „utratę fokusu ORAZ zmianę zawartości”. Tak więc w przeglądarce Chrome funkcja „panelu aktualizacji” była wywoływana raz, na FF dwa razy po każdym naciśnięciu klawisza (jeden nakeyup
, jeden nachange
)Dodatkowo wyczyszczenie pola małym X (którego nie ma pod FF) uruchomiło
search
zdarzenie pod Chrome: nokeyup
, nochange
.Konkluzja? Użyj
input
zamiast tego:Działa z tym samym zachowaniem we wszystkich testowanych przeglądarkach, reagując na każdą zmianę treści wejściowej (kopiuj-wklej za pomocą myszy, autouzupełnianie i „X”).
źródło
change
zdarzenie tak samo jak Chrome, uruchamiając się tylko po naciśnięciu Enter lub utracie fokusa.Korzystając z odpowiedzi Pauana, jest to w większości możliwe. Dawny.
źródło
change
zdarzenie nie jest uruchamiane, dopóki wblur
zasadzie. Samo kliknięcie w(x)
polu wyszukiwania przeglądarki Chrome nie wywołuje żadnego zdarzenia. Po dalszych badaniach (i przeczytaniu poniższych komentarzy) zabrałem sięclick
do pracy. Więc$("input[type='search']").bind('click', function(e) { if ( this.value=="") {//this just cleared!} });
działa po mojej stronie$("input[type='search']").bind('click', function(e) { if ( this.value=="") {//this just cleared!} });
uruchamia się również, gdy użytkownik kliknie pole wejściowe.Wiem, że to stare pytanie, ale szukałem podobnej rzeczy. Określ, kiedy kliknięto „X”, aby wyczyścić pole wyszukiwania. Żadna z odpowiedzi tutaj nie pomogła mi w ogóle. Jeden był blisko, ale również dotknięty, gdy użytkownik nacisnął przycisk „Enter”, wywołałby ten sam skutek, co kliknięcie „X”.
Znalazłem tę odpowiedź w innym poście i działa idealnie dla mnie i uruchamia się tylko wtedy, gdy użytkownik wyczyści pole wyszukiwania.
źródło
Wydawało mi się sensowne, że kliknięcie X powinno liczyć się jako zmiana. Miałem już całe zdarzenie onChange, aby zrobić to, czego potrzebowałem. Więc dla mnie rozwiązaniem było po prostu wykonanie tej linii jQuery:
$('#search').click(function(){ $(this).change(); });
źródło
if (this.value === "") { ... }
Wygląda na to, że nie masz dostępu do tego w przeglądarce. Dane wejściowe wyszukiwania to opakowanie HTML Webkit dla Cocoa NSSearchField. Wydaje się, że przycisk anulowania jest zawarty w kodzie klienta przeglądarki bez żadnego zewnętrznego odniesienia z opakowania.
Źródła:
Wygląda na to, że będziesz musiał to rozgryźć poprzez pozycję myszy po kliknięciu za pomocą czegoś takiego:
źródło
Znalazłem ten post i zdaję sobie sprawę, że jest trochę stary, ale myślę, że mogę mieć odpowiedź. Obsługuje kliknięcie krzyża, cofanie się i naciskanie klawisza ESC. Jestem pewien, że prawdopodobnie można by to lepiej napisać - wciąż jestem stosunkowo nowy w javascript. Oto, co ostatecznie zrobiłem - używam jQuery (v1.6.4):
źródło
spróbuj tego, mam nadzieję, że ci pomogę
źródło
Uważam, że jest to jedyna odpowiedź, która uruchamia się TYLKO po kliknięciu x.
Jest to jednak trochę hakerskie i odpowiedź Ggutenberga będzie działać dla większości ludzi.
Gdzie
'#search-field'
jest selektor jQuery dla twojego wejścia. Użyj,'input[type=search]'
aby wybrać wszystkie wejścia wyszukiwania. Działa, sprawdzając zdarzenie wyszukiwania (odpowiedź Pauana) natychmiast po kliknięciu pola.źródło
Pełne rozwiązanie jest tutaj
Spowoduje to wyczyszczenie wyszukiwania po kliknięciu przycisku wyszukiwania x. lub wywoła hit API wyszukiwania, gdy użytkownik naciśnie Enter. ten kod można dodatkowo rozszerzyć o dodatkowy element dopasowujący zdarzenie esc keyup. ale to powinno wystarczyć.
Twoje zdrowie.
źródło
w oparciu o pętlę zdarzeń js,
click
przycisk wyczyszczenia wywołasearch
zdarzenie na wejściu , więc poniższy kod będzie działał zgodnie z oczekiwaniami:Powyższy kod onclick wydarzenie zarezerwowane
this._cleared = false
pętlę zdarzeń, lecz zdarzenie będzie zawsze uruchamiane po tymonsearch
wydarzeniu, dzięki czemu można stabilnie sprawdzićthis._cleared
stan ustalić, czy użytkownik po prostu kliknieX
przycisk, a następnie wywołałonsearch
zdarzenie.Może to działać na prawie wszystkich warunkach , wklejony tekst , ma atrybut przyrostowy , naciśnięcie klawisza ENTER / ESC itp.
źródło
Oto jeden ze sposobów osiągnięcia tego. Musisz dodać atrybut przyrostowy do swojego html, inaczej nie zadziała.
źródło
ECMASCRIPT 2016
źródło
Wyszukiwanie lub onclick działa ... ale problem, który znalazłem, dotyczy starszych przeglądarek - wyszukiwanie kończy się niepowodzeniem. Wiele wtyczek (autouzupełnianie jquery ui lub filtr fantazyjny) ma moduły obsługi rozmycia i ostrości. Dodanie tego do pola wprowadzania autouzupełniania zadziałało dla mnie (użyłem this.value == "", ponieważ było to szybsze do oceny). Rozmycie, a następnie ostrość, utrzymywało kursor w ramce po naciśnięciu małego „x”.
PropertyChange i dane wejściowe działały zarówno dla IE 10, jak i IE 8, a także dla innych przeglądarek:
W przypadku rozszerzenia filtra FancyTree możesz użyć przycisku resetowania i wymusić kliknięcie w następujący sposób:
Powinien być w stanie dostosować to do większości zastosowań.
źródło
Po kliknięciu przycisku krzyżowego TextField (X) onmousemove () zostaje uruchomiony, możemy użyć tego zdarzenia do wywołania dowolnej funkcji.
źródło