Ich habe ein Ereignis mit an ein Textfeld angehängt addEventListener
. Es funktioniert gut. Mein Problem trat auf, als ich das Ereignis programmgesteuert von einer anderen Funktion aus auslösen wollte.
Wie kann ich es tun?
javascript
events
triggers
addeventlistener
dom-events
KoolKabin
quelle
quelle
Antworten:
Sie können fireEvent in IE 8 oder niedriger und dispatchEvent von W3C in den meisten anderen Browsern verwenden. Um das Ereignis zu erstellen, das Sie auslösen möchten, können Sie entweder
createEvent
odercreateEventObject
je nach Browser verwenden.Hier ist ein selbsterklärender Code (vom Prototyp), der ein Ereignis
dataavailable
auf Folgendes auslöstelement
:quelle
eventName
hier?Ein Arbeitsbeispiel:
Informationen zu Polyfill für ältere Browser und komplexere Beispiele finden Sie in den MDN-Dokumenten .
Siehe Supporttabellen für
EventTarget.dispatchEvent
undCustomEvent
.quelle
detail
ist eine Eigenschaft derEvent
, weisen Sie also alle Daten, auf die Sie am anderen Ende zugreifen möchten, zu und greifen Sie über zuevent.detail
. +1Wenn Sie jQuery nicht verwenden möchten und sich nicht besonders um die Abwärtskompatibilität kümmern, verwenden Sie einfach:
Siehe die Dokumentation hier und hier .
BEARBEITEN: Abhängig von Ihrem Setup möchten Sie möglicherweise Folgendes hinzufügen
bubbles: true
:quelle
CustomEvent
die entsprechende Polyfüllung verwenden.Wenn Sie jQuery verwenden, können Sie dies einfach tun
und damit umgehen
Dabei bedeutet "[arg0, arg1, ..., argN]", dass diese Argumente optional sind.
quelle
Wenn Sie IE9 + unterstützen, können Sie Folgendes verwenden. Das gleiche Konzept ist in You Might Not Need jQuery enthalten .
Wenn Sie bereits jQuery verwenden, finden Sie hier die jQuery-Version des obigen Codes.
quelle
window.CustomEvent
existiert, kann aber nicht als Konstruktor aufgerufen werden : caniuse.com/#search=CustomEvent ;)Ich habe beim Mouseover mit JavaScript nach Klick-, Maus- und Mausereignissen gesucht. Ich habe eine Antwort von Juan Mendes gefunden . Für die Antwort klicken Sie hier .
Klicken Sie hier ist die Live-Demo und unten ist der Code:
quelle
Nur um eine Alternative vorzuschlagen, bei der ein Listener-Ereignis nicht manuell aufgerufen werden muss:
Was auch immer Ihr Ereignis-Listener tut, verschieben Sie es in eine Funktion und rufen Sie diese Funktion vom Ereignis-Listener auf.
Dann können Sie diese Funktion auch an einer anderen Stelle aufrufen, an der Sie dasselbe ausführen müssen, was das Ereignis beim Auslösen tut.
Ich finde das weniger "codeintensiv" und leichter zu lesen.
quelle
Ich habe gerade Folgendes verwendet (scheint viel einfacher zu sein):
In diesem Fall wird das Ereignis nur ausgelöst, wenn der Wert tatsächlich so geändert wurde, wie Sie ihn durch den vom Benutzer durchgeführten normalen Fokusortauslöser auslösen würden.
quelle
element.click()
.Die Antwort von @ Dorian für die Arbeit mit IE wurde geändert :
FIDDLE: https://jsfiddle.net/z6zom9d0/1/
SIEHE AUCH:
https://caniuse.com/#feat=customevent
quelle
Die akzeptierte Antwort hat bei mir nicht funktioniert, keine der createEvent-Antworten.
Was am Ende für mich funktioniert hat war:
Hier ist ein Ausschnitt:
Aus dem Lesen: https://developer.mozilla.org/en-US/docs/Web/API/MouseEvent
quelle
quelle
Sie könnten diese Funktion verwenden, die ich zusammen kompiliert habe.
Löse ein Ereignis aus:
Watch Event:
Hoffe das hilft!
quelle
Sie können den folgenden Code verwenden, um ein Ereignis mit der Element-Methode auszulösen:
Code-Snippet anzeigen
quelle
Am effizientesten ist es, dieselbe Funktion aufzurufen, bei der registriert wurde
addEventListener
direkt .Sie können auch ein gefälschtes Ereignis mit auslösen
CustomEvent
und co .Schließlich unterstützen einige Elemente wie
<input type="file">
eine.click()
Methode.quelle
Dies löst sofort ein Ereignis 'vor der Installation' aus.
quelle
Verwenden Sie den Ereignisaufruf jquery. Schreiben Sie die folgende Zeile, in der Sie onChange eines Elements auslösen möchten.
element_id ist die ID des Elements, dessen onChange Sie auslösen möchten.
Vermeiden Sie die Verwendung von
Weil es sehr wenig Unterstützung hat. Siehe dieses Dokument für seine Unterstützung .
quelle
HTML
JS
quelle
Was Sie wollen, ist ungefähr so:
Mit jQuery wäre es ungefähr so:
quelle
document.getElementByClassName
existiert nicht. 2.document.getElementsByClassName
existiert, gibt aber eine Liste zurück. 3. Dies funktioniert nur für einige ausgewählte native Ereignisse. 4. Das letzte Beispiel löst ein jQuery-Ereignis aus, bei dem kein zugrunde liegendes natives Ereignis vorhanden ist.