marc: input-feld mit dropdown menü abgleichen

Hallo Leute

Folgendes Problem:

Ich möchte in einem Formular dem Benutzer die Möglichkeit geben einen Hafen auszuwählen. Dazu soll er die Möglichkeit haben den Hafen durch eingabe des Hafen-Codes ODER durch auswahl aus einem sehr langem dropdown Menü (also so einem einzeiligen non-multiple Selection Feld) zu definieren. Im Dropdown Menü sollten die Häfen natürlich vollständig ausgeschrieben sein. Ist es möglich, dass der Benutzer den Code da eingibt und bei Verlassen (bzw noch bei der Eingabe) der Eingabe-Zeile die Markierung des Dropdown Menüs die Richtige Position automatisch findet? Er gibt also z.b "NY" in das Codefeld ein und rechts davon springt das Menü auf den Eintrag "New York". Umgekehrt wäre es auch praktisch, also Auswahl im Menü und der Code wird im Eingabefeld automatisch aktualisiert, bzw eingetragen. Die Auswahlliste ist nunmal sehr lang und alle Codes kennt auch keiner.  Einfach die Auswahlliste markieren und "N" drücken bringt leider auch selten was, da ja vor "New York" noch zig andere kommen.

Ist das sehr kompliziert? Mir fiel es schwer dazu Information zu finden

Danke für Tipps oder Verweise an helfende Seiten

  1. Ist das sehr kompliziert? Mir fiel es schwer dazu Information zu finden

    vielleicht hilft dir das weiter?
    http://home.arcor.de/struebig/js/short/optionliste.htm

    Struppi.

    1. vielleicht hilft dir das weiter?
      Struppi.

      Das hat mir tatsächlich sehr geholfen!
      Danke sehr

      1. leider kenn ich mich nicht genug mit js aus, umzu erkennen ob es auch möglich ist, dieses script für mehrere dropdowns+eingabezeilen zu benutzen. die feldnamen scheinen da sehr eingearbeitet zu sein.

        bei mir sieht das so aus:

        1. EINGABEZEILE -- DROPDOWN
        2. EINGABEZEILE -- DROPDOWN
        3. EINGABEZEILE -- DROPDOWN

        1. vergessen zu erwähnen: die namen/IDs der dropdowns/felder sind dabei variabel (php script verteilt die namen, da es immer unterschiedliche anzahl von felder gibt)
          ich müsste also hinter jedes dropdown ding ein kleines stück js haben, welches den namen des aktuellen feldes weitereichen kann.

          1. vergessen zu erwähnen: die namen/IDs der dropdowns/felder sind dabei variabel (php script verteilt die namen, da es immer unterschiedliche anzahl von felder gibt)
            ich müsste also hinter jedes dropdown ding ein kleines stück js haben, welches den namen des aktuellen feldes weitereichen kann.

            Ich hab den Code mal ein wenig flexibler gemacht, den Rest musst du selber machen.

            Struppi.

            1. Danke, das ist ja prima jetzt

            2. Hatte Dir noch eine Mail geschickt, aber die kam zurück. Hier der Inhalt:

              Hallo Struppi

              Du hattest mir im selfhtml Forum mit Deinem Link zum Thema Dropdown Liste
              geholfen.
              Nun hast Du ja Dein Script aktualisiert und ich hab es auch sofort
              eingebaut, doch es lieferte bei meiner doch sehr komplexen Liste beim
              "backspacen" immer einen Fehler und die Liste ist danach unvollständig:
              "das objekt unterstützt diese eigenschaft oder methode nicht"
              Es hat mich fast verrückt gemacht, weil das auf Deiner Demo-Seite nicht
              passierte, bis ich dann einmal folgendes eingeben habe:
              B - D - BACKSPACE - BACKSPACE
              Nun lieferte auch Deine Demo-Seite den erwähnten Fehler. Jedenfalls im IE6.
              (Mein Standard Browser 'Firebird' kann generell nicht korrekt backspacen,
              aber ich bräuchte es eh nur für IE)

              Die Fehlermeldung verweist auf folgende Zeile (Zeichen 12) in der selecter
              function:
              while(i--) list.options[i] = window[list.name][i];

              Vielleicht hilft Dir das ja ein wenig, falls Du es ändern/verbessern
              möchtest.

              Danke jedenfalls für Deine Bemühungen bei meinem Problem,
              Marc

              1. zu lösen mit

                for(var i = 0; i < window[list.name].length; i++){
                        list.options[i] = window[list.name][i];
                        }

                statt

                while(i--) list.options[i] = window[list.name][i];

                glaub ich