Inputs gruppieren
lollollol
- javascript
Moin,
folgendes Problem: Ich hab ne Form mit inputs. Damit kann ich ja super auf die Elemente zugreifen (form.inputName.value). Nun will ich aber ein paar Elemente mit Javascript löschen, aber nicht alle, weshalb form.innerHTML = ""; nicht in Frage kommt. Kann ich das irgendwie so machen, dass ich die inputs in ein Bereich packe, mit dem ich so drauf zugreifen kann: formName.bereichname.inputName....? Wenn ja, mit welchem Element muss ich das machen? Div wäre ja naheliegend, aber soweit ich weiß, kann man dem kein Name geben, oder?
Hoffe, ihr versteht mein Problem,
Thx
lollollol
@@lollollol:
nuqneH
Div wäre ja naheliegend,
Mir läge fieldset näher.
aber soweit ich weiß, kann man dem kein Name geben, oder?
Aber IDs.
Qapla'
Hallo,
folgendes Problem: Ich hab ne Form mit inputs.
ne Form? Du meinst ein Formular?
Damit kann ich ja super auf die Elemente zugreifen (form.inputName.value).
Das ist eine der gängigen Möglichkeiten.
Nun will ich aber ein paar Elemente mit Javascript löschen, aber nicht alle, weshalb form.innerHTML = ""; nicht in Frage kommt.
Außerdem wären dann nicht nur die inputs weg, sondern auch alle Labels und strukturierenden Elemente.
Kann ich das irgendwie so machen, dass ich die inputs in ein Bereich packe, mit dem ich so drauf zugreifen kann: formName.bereichname.inputName....?
So nicht ganz, denn inerhalb des Formulars lassen sich nur die Form Controls, also die Formularelemente so ansprechen. Du kannst aber problemlos die Elemente, die du verschwinden lassen willst, in ein gruppierendes Element stecken, diesem eine ID geben und es dann mit document.getElementById() adressieren.
Wenn ja, mit welchem Element muss ich das machen? Div wäre ja naheliegend, aber soweit ich weiß, kann man dem kein Name geben, oder?
Ein div wäre eine Möglichkeit (stimmt, div darf kein name-Attribut haben, aber eine ID). Innerhalb eines Formulars ist aber vermutlich fieldset das passendere Element.
Nebenbei gefragt: Warum möchtest du die Elemente löschen? Reicht es nicht, wenn du sie (oder ihr gruppierendes Containerelement) per CSS mit display:none; ausblendest? In diesem Fall würde es genügen, dem Containerelement oder eventuell auch dem Formular selbst mit Javascript dynamisch eine Klasse zu geben (oder wegzunehmen) und mit CSS auf diese Veränderung zu reagieren.
Ciao,
Martin
ne Form? Du meinst ein Formular?
jo^^
Außerdem wären dann nicht nur die inputs weg, sondern auch alle Labels und strukturierenden Elemente.
Hab eh keine Labels, sondern nur inputs, von daher wär das mir auch egal, hätte ich halt als letzen Ausweg gemacht.
So nicht ganz, denn inerhalb des Formulars lassen sich nur die Form Controls, also die Formularelemente so ansprechen. Du kannst aber problemlos die Elemente, die du verschwinden lassen willst, in ein gruppierendes Element stecken, diesem eine ID geben und es dann mit document.getElementById() adressieren.
Find halt die Methode ohne document.getElementById chilliger, weil die in dem Fall sinnvoller ist, da ich inputs mit gleichem Namen hab.
Wenn ja, mit welchem Element muss ich das machen? Div wäre ja naheliegend, aber soweit ich weiß, kann man dem kein Name geben, oder?
Ein div wäre eine Möglichkeit (stimmt, div darf kein name-Attribut haben, aber eine ID). Innerhalb eines Formulars ist aber vermutlich fieldset das passendere Element.
Nebenbei gefragt: Warum möchtest du die Elemente löschen? Reicht es nicht, wenn du sie (oder ihr gruppierendes Containerelement) per CSS mit display:none; ausblendest? In diesem Fall würde es genügen, dem Containerelement oder eventuell auch dem Formular selbst mit Javascript dynamisch eine Klasse zu geben (oder wegzunehmen) und mit CSS auf diese Veränderung zu reagieren.
Ne, das sollte schon ganz weg sein, da das alles dynamisch ist und die Spaltenanzahl nicht feststehlt. Aber danke, fieldset ist genau das, was ich brauche (y) Es funktioniert :)
lg
lollollol
@@lollollol:
nuqneH
Hab eh keine Labels, sondern nur inputs
Und wie weiß der Nutzer dann, was er in welches Feld eingeben soll?
Find halt die Methode ohne document.getElementById chilliger, weil die in dem Fall sinnvoller ist, da ich inputs mit gleichem Namen hab.
Elemente mit ID lassen sich auch document.<id> ansprechen – das ist ein Feature! ;-) (in alten IEs – nicht standardkonform, nicht verwenden!)
Ne, das sollte schon ganz weg sein, da das alles dynamisch ist
Ja und? Dynamisch ist auch visuell weg.* Und das ist performanter als DOM-Manipulationen.
Qapla'
* und wenn man’s richtig mach auch screenreader-weg.
Hab eh keine Labels, sondern nur inputs
Und wie weiß der Nutzer dann, was er in welches Feld eingeben soll?
placeholder-Attribut zum Beispiel.
@@1UnitedPower:
nuqneH
placeholder-Attribut zum Beispiel.
Schlechstes Beispiel. Steht sogar an der von dir verlinkten Stelle: „The placeholder attribute should not be used as an alternative to a label.“
Label in Eingabefeldern sind Designfehler. Keine gute Idee. Nicht machen. Wirklich nicht.
Es besteht ja auch überhaupt keine Notwendigkeit: Auf Desktop-Geräten ist sowieso genügend Platz für Labels da. Auf kleinen Mobilgeräten mit Tochbedienung muss man auch einigen Abstand zwischen Eingabefeldern lassen, also auch Platz für Labels da.
Qapla'
PS: Ich sollte meinen Artikel wegen dessen Unsinnigkeit mal überarbeiten.
Label in Eingabefeldern sind Designfehler. Keine gute Idee. Nicht machen. Wirklich nicht.
Die Argumentation ist schlüssig. Eine Fallstudie zu dem Thema wäre sicher interessant.