Der Martin: input-Feld mit parent-Element umhüllen?

Beitrag lesen

Hallo,

ich habe ein input-Feld, in das ein Ortsname eingegeben wird. Während des Befüllens (Tastatur oder Maus copy paste) werden per Ajax Vorschläge geholt und im zugehörigen Vorschlagsfeld darunter angezeigt:

<div style="position:relative">
  <input ... id="such_ort" oninput="getOrte( '[HOST]', this )" ... />
  <div id="such_ort_vorschlaege" style="position:absolute"></div>
</div>

an dem Code-Schnipsel fallen mir mehrere Dinge auf:

  • Warum die Klimmzüge mit position? Das dem input-Element folgende div wird als Blockelement sowieso direkt unterhalb davon angeordnet.
  • Ist die ID für den div-Container mit den Vorschlägen nötig? Eventuell um das Element mit Javascript leichter zu finden. Allerdings findet man es auch über die ID des input-Elements mit nextSibling, und mit CSS über den +-Kombinator:
    #such_ort+div
    Und beim input-Element ist die ID sowieso nützlich, um ein label daran zu koppeln.
  • Brauchst du das umgebende div wirklich? Eventuell bietet sich da etwas anderes an, vielleicht das zugehörige label. Oder ein fieldset.
  • Wenn du die Code-Schnippsel mit html auszeichnest, klappt's auch mit dem Nachb... ähm, mit dem Syntax-Highlighting (bei dir fehlt das 'l').

Das funktioniert gut. Da es im Projekt zahlreiche Felder mit Vorschlagsfunktion gibt, müsste ich doch mit

  <input ... id="such_ort" oninput="getOrte( '[HOST]', this )" ... />

auskommen und die anderen Zeilen mit Javascript beim erstmaligen Aufruf von oninput drumrumbasteln.

Mag sein, aber ich verstehe den Sinn nicht.

Habe "such_ort" relativ gesetzt und "such_ort_vorschlaege" als Knoten position:absolute dahinter gesetzt. Die Vorschläge poppen dann oben im Display auf, aber nicht hnter dem input Feld. Ist klar.

Nö, ist nicht klar. Keine Ahnung, was du dabei im Sinn hast.

Ich habe recherchiert, aber nicht gefunden, wie ich ein vorhandenes Element (input) in ein parent-Element einhüllen könnte.

IMO wäre das mit einer umständlichen DOM-Transplantation möglich, aber völlig unnötig.

Ciao,
 Martin

--
Disziplin: Teppichboden wiederfinden, wenn man ihn verlegt hat.