Wie dynamisch neu konfigurieren, Drupal ' s jQuery-basierten AutoVervollständigen bei der Laufzeit?
Drupal hat einen sehr gut gebauten, jQuery-basierte autocomplete.js. In der Regel, Sie müssen nicht die Mühe mit ihm, da er die Konfiguration und die Ausführung erfolgt durch die Drupal form-API.
Nun, ich brauche einen Weg, um es neu konfigurieren (Laufzeit mit JavaScript, das ist). Ich habe eine standard-drop-down-select-box mit einem text-Feld neben Sie, und je nachdem, welche option ausgewählt ist, in der select-box, die ich anrufen müssen unterschiedliche URLs für die Vervollständigung, und für eine der Optionen, die Autovervollständigung sollte vollständig deaktiviert werden. Ist es möglich zu konfigurieren, dass der vorhandene autocomplete-Instanz, oder muss ich die irgendwie zerstören und neu erstellen?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Haben Sie einen Blick auf misc/autocomplete.js.
Die Eingabe der value-Attribut wird verwendet, um zu erstellen, ACDB, das ist ein cache der Werte für die AutoVervollständigen-Pfad (uri). In der Drupal.jsAC-Funktion binden Sie das element, das keydown -, keyup-und blur-events mit dem Trigger der autocomplete ajax-operation (die speichert die Werte in der ACDB-Objekt für das element), öffnet popups, etc.
Was Sie tun müssen, ändern Sie die Eingabe von ist-Wert und auch anfügen das Verhalten. Sie werden anfügen das Verhalten durch das entfernen der '.AutoVervollständigen-Verarbeitung Klasse auf die autocomplete text field-input-element, und rufen Sie dann Drupal.attachBehaviors(thatInputElement).
Funktioniert dies nicht. Dinge gehen sehr schlecht, wenn Sie legen das gleiche Verhalten an den gleichen Elements über und über wieder. Es kann sinnvoller sein, verschiedene AutoVervollständigen-Felder und einfach verstecken und zeigen Ihnen, basierend auf dem Wert der wählen Sie. Dies würde erfordern noch aufrufen von Drupal.attachBehaviors, wenn Sie ein-und ausblenden der widget, aber das gleiche Verhalten wäre angebracht bleiben, wenn der Schalter mehr als einmal passiert, und Sie würden es nicht riskieren anbringen, das gleiche Verhalten zu dem element, das mehrere Male.
Gut, als Referenz, ich habe geworfen, die zusammen einen hack, der funktioniert, aber wenn jeder denken kann eine bessere Lösung, ich würd mich freuen, es zu hören.
Dieser code kommt aus der ding_campaign Modul. Fühlen Sie sich frei heraus zu überprüfen den code, wenn Sie brauchen, etwas ähnliches zu tun. Es ist alles GPL2.
es sollte so einfach wie dinamically ändern Sie den "Wert" von "hidden" autocomplete
input-element kommt, neben autocomplete Formularfeldern. dh.
autocomplete-processed
Klasse aus das versteckte Feld und dann erneut fügen Sie die AutoVervollständigen-Verhalten durch AufrufDrupal.behaviors.autocomplete(document);
.Funktionierende Lösung für Drupal 5