T & Tscript.aculo.us - Autocompleter bei Mausklick

script.aculo.us - Autocompleter bei Mausklick und andere Ereignisse

 

Gegeben:

Gewünschte Funktion:

Der Autocompleter soll bei Doppelklick in das Input-Feld bereits einen Request abschicken und das Ergebnis anzeigen.

IST-Zustand:

Aktuell reagiert der Autocompleter von script.aculo.us nur auf das Ereignis onBlur und onKeyPress.
siehe lib/controls.js Zeile ~90:

Event.observe(this.element, 'keydown', this.onKeyPress.bindAsEventListener(this));
Event.observe(this.element, 'blur', this.onBlur.bindAsEventListener(this));

Es wäre möglich zzgl. die Zeile >>Event.observe(this.element, 'dblclick', this.onBlur.bindAsEventListener(this));<< einzufügen, allerdings ist ein Update der Dateien dann kaum mehr möglich.

Lösung:

Damit der Autocompleter auf ein Input-Feld reagiert, müsste bereits folgender JS-Code vorhanden sein:

<script type="text/javascript">
  document.observe('dom:loaded',function(){
    new Ajax.Autocompleter(
                                             'ldap_cn',
                                             'autocomplete_dbtables',
                                             '../autocomplete/ldap_search.php',
                                            {
                                              paramName:'cn',
                                              frequency:0.1,
                                              minChars:2
                                            }
                                          )
  });
</script>

Für den Aufbau und die vorhandenen Parameter bitte die Docu lesen ...

Damit nun der Autocompleter auf Doppelklick im Input-Feld reagiert, muss das JS wie nachfolgend geändert werden:

<script type="text/javascript">
  document.observe('dom:loaded',function(){
    var myAC = new Ajax.Autocompleter(
                                             'ldap_cn',
                                             'autocomplete_dbtables',
                                             '../autocomplete/ldap_search.php',
                                            {
                                              paramName:'cn',
                                              frequency:0.1,
                                              minChars:2
                                            }
                                          )

  Event.observe(myAC.element, 'dblclick', myAC.onKeyPress.bindAsEventListener(myAC));
  });
</script>

Somit wird das Autocompleter-Objekt in der Variable myAC gespeichert und in der nachfolgenden Anweisung direkt auf die Eigenschaften und Methoden des Objektes zugegriffen.

Hinweis:

Damit das Ereignis dblclick und auch andere Ereignisse funktionieren, muss im Input-Feld die Mindestanzahl an Zeichen, die durch den Parameter minChars angegeben ist, stehen. Somit sollte auf jeden Fall ein kleiner Dummytext z.B. "bitte wählen Sie" im Input-Feld stehen.