Ich versuche programmgesteuert (mit jQuery) einen Klick auf eine Schaltfläche mit AJAX-Verhalten in einer Drupal-Form auszulösen, aber bis jetzt jQuery('#edit-submit').click()
wird nichts unternommen.
Ein echter Mausklick auf diese Schaltfläche funktioniert wie vorgesehen. Irgendwelche Ideen, wie es funktioniert?
7
ajax
javascript
Daniel
quelle
quelle
Antworten:
jQuery('#edit-submit').mousedown()
- Anscheinend gibt es einen großen Unterschied.quelle
mousedown()
ist nur "der erste Teil" einesclick()
Ereignisses, der abgeschlossen ist, wenn ermouseup()
eintritt. Wenn Sie auf einen Link klicken und dann die Maustaste außerhalb des Bereichs des Links loslassen, wird derclick()
normalerweise nicht ausgelöst und der Link wird nicht verfolgt. Wahrscheinlich verhindert ein Ajax-Anruf dasmouseup()
Abfeuern, aber dies ist nur eine Vermutung ...Eigentlich muss man nicht raten.
Sie sollten Drupal-Verhalten verwenden
Dadurch erhalten Sie Zugriff auf die Ajax-Eigenschaft der Einstellungen.
Abhängig von Ihrer Konfiguration sollte eine Liste der auslösenden Elemente mit verschiedenen Eigenschaften angezeigt werden, z. B. dem Namen der Rückruffunktion, der Selektor-ID sowie dem Namen des auslösenden Ereignisses.
Sie können dann die relevanten Informationen verwenden, um Ihr Ereignis auszulösen.
quelle
Erstellen Sie Ajax Submit wie folgt.
Dann würde das jquery .click () -Ereignis in der Drupal-Ajax-Form funktionieren.
quelle
Sie können auch die
.trigger()
jQuery-Methode verwenden.$('#element').trigger('click');
quelle
In meinem Fall haben die oben empfohlenen Lösungen bei mir nicht funktioniert, aber die Erwähnung von .mousedown () hat zu der folgenden Idee geführt, die bei mir funktioniert hat (Drupal 7):
In der Form API-Referenz unter #ajax_prevent finden Sie einige hilfreiche Hintergrundinformationen dazu, warum dies der Fall ist
quelle
Mit Blick auf das Modul Better Exposed Filters übermitteln sie das AJAX-Formular, indem sie $ (.ctools-auto-submit-click ') suchen und einen Klick auslösen.
quelle
Sie müssen das
submit
Ereignis auf dem Formular auslösen .Click
undmousedown
Ereignisse auf Schaltflächen funktionieren nicht.quelle