Dołączyłem zdarzenie do pola tekstowego za pomocą addEventListener
. To działa dobrze. Mój problem pojawił się, gdy chciałem programowo wywołać zdarzenie z innej funkcji.
Jak mogę to zrobić?
javascript
events
triggers
addeventlistener
dom-events
KoolKabin
źródło
źródło
Odpowiedzi:
Możesz użyć fireEvent na IE 8 lub starszym , a W3C's dispatchEvent na większości innych przeglądarek. Aby utworzyć wydarzenie, które chcesz uruchomić, możesz użyć jednej
createEvent
lub wcreateEventObject
zależności od przeglądarki.Oto zrozumiały fragment kodu (z prototypu), który uruchamia zdarzenie
dataavailable
naelement
:źródło
eventName
tutaj?Przykład roboczy:
W przypadku starszych przeglądarek wielopełniających i bardziej złożonych przykładów zobacz dokumentację MDN .
Zobacz tabele wsparcia dla
EventTarget.dispatchEvent
iCustomEvent
.źródło
detail
jest własnościąEvent
, więc przypisz do niej dane, do których chcesz uzyskać dostęp na drugim końcu, i dostęp do nichevent.detail
. +1Jeśli nie chcesz używać jQuery i nie martwisz się o kompatybilność wsteczną, po prostu użyj:
Zobacz dokumentację tutaj i tutaj .
EDYCJA: W zależności od konfiguracji możesz dodać
bubbles: true
:źródło
CustomEvent
i odpowiedniego polifillu.jeśli używasz jQuery, możesz to zrobić po prostu
i radzę sobie z tym
gdzie „[arg0, arg1, ..., argN]” oznacza, że te argumenty są opcjonalne.
źródło
Jeśli wspierasz IE9 +, możesz użyć następujących. Ta sama koncepcja jest zawarta w You Might Not Need jQuery .
Jeśli już używasz jQuery, oto wersja jQuery powyższego kodu.
źródło
window.CustomEvent
istnieje, ale nie można go wywołać jako konstruktora: caniuse.com/#search=CustomEvent ;)W JavaScript najechałem kliknięciem strzelania, zdarzeniem mousedown i zdarzeniem po najechaniu kursorem myszy. Znalazłem odpowiedź udzieloną przez Juana Mendesa . Aby uzyskać odpowiedź, kliknij tutaj .
Kliknij tutaj, aby zobaczyć demo na żywo, a poniżej kod:
źródło
Aby zasugerować alternatywę, która nie wiąże się z koniecznością ręcznego wywoływania zdarzenia detektora:
Cokolwiek zrobi detektor zdarzeń, przenieś go do funkcji i wywołaj tę funkcję z detektora zdarzeń.
Następnie możesz wywołać tę funkcję w dowolnym miejscu, w którym musisz osiągnąć to samo, co zdarzenie, gdy się uruchomi.
Uważam, że jest to mniej „wymagające kodu” i łatwiejsze do odczytania.
źródło
Właśnie użyłem następujących (wydaje się znacznie prostsze):
W takim przypadku zdarzenie jest wyzwalane tylko wtedy, gdy wartość została rzeczywiście zmieniona, tak jak wywołałbyś to utracone przez użytkownika zwykłe miejsce skupienia.
źródło
element.click()
.Zmodyfikowany @ Doriana odpowiedź do pracy z IE:
FIDDLE: https://jsfiddle.net/z6zom9d0/1/
ZOBACZ TAKŻE:
https://caniuse.com/#feat=customevent
źródło
Przyjęta odpowiedź nie działała dla mnie, żadna z funkcji createEvent nie działała.
W końcu zadziałało dla mnie:
Oto fragment:
Z czytania: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent
źródło
źródło
Możesz użyć tej funkcji, którą skompilowałem razem.
Uruchom zdarzenie poniżej:
Obejrzyj wydarzenie:
Mam nadzieję że to pomoże!
źródło
Możesz użyć poniższego kodu do wywołania zdarzenia za pomocą metody Element:
Pokaż fragment kodu
źródło
Najbardziej efektywnym sposobem jest wywołanie tej samej funkcji, która została zarejestrowana
addEventListener
bezpośrednio.Możesz także wywołać fałszywe zdarzenie za pomocą
CustomEvent
i co.Wreszcie niektóre elementy, takie jak
<input type="file">
obsługa.click()
metody.źródło
spowoduje to natychmiastowe wywołanie zdarzenia „przed instalacją”
źródło
Użyj wywołania zdarzenia jquery. Napisz poniższy wiersz, w którym chcesz uruchomić onChange dowolnego elementu.
element_id jest identyfikatorem elementu, którego onChange chcesz uruchomić.
Unikaj używania
Ponieważ ma bardzo mniejsze wsparcie. Aby uzyskać wsparcie, zapoznaj się z tym dokumentem .
źródło
HTML
JS
źródło
To, czego chcesz, to coś takiego:
Przy użyciu jQuery wyglądałoby to tak:
źródło
document.getElementByClassName
nie istnieje. 2.document.getElementsByClassName
istnieją, ale zwraca listę. 3. Działa to tylko w przypadku kilku wybranych wydarzeń natywnych. 4. Ostatni przykład wyzwala zdarzenie jQuery, w którym nie istnieje żadne zdarzenie macierzyste.