Alle Elemente in einem Formular leeren
-
Hallo. Ich habe ein Kontaktformular mit mehreren Checkboxen, mehreren einzeiligen Eingabefeldern und einem Textfeld. Wie kann ich dieses Formular via Javascript leeren? - das <input type="reset" /> funktioniert nicht, da ich Werte, die per PHP als Standard eingetragen wurden, habe. Ich habe es so probiert:
function clear() { for (var i=0;i<document.forms[0].elements.count;++i) { if (document.forms[0].elements[i].type=="text") document.forms[0].elements[i].value=""; else if (document.forms[0].elements[i].type=="checkbox") document.forms[0].elements[i].checked="false"; } }
Und das Ganze dann anhand eines Buttons aufgerufen:
<input type="button" onClick="clear()" value="Zurücksetzen" />
Aber das funktioniert leider nicht... es passiert garnichts, ich vermute, dass es daran liegt, dass er die Schleife nicht durchgeht. Wie kann ich sobnst bestimmen, wie viele Elemente in einem Formular vorhanden sind? Und wie kann ich das Textfeld leeren?
-
Es gibt die Möglichkeit einen defaultValue einzustellen. Allerdings geht das anscheinend nur unter JavaScript. Du müsstest also beim Laden des Dokuments deine Schleife machen und die Defaultwerte füllen. Danach solltest du problemlos <input type="reset"...> verwenden können.
-
Afaik gibt es elements.count gar nicht - müsstest du im IE dadurch angezeigt bekommen, dass in der linken unteren Ecke ein Ausrufezeichen erscheint; ein Doppelklick darauf zeigt nähere Infos. Oder kommt er in die for-Schleife? Test z.B. mit alert()
Ansonsten kannst du mal sowas testen (funktioniert bei mir ganz ordentlich):
for(var i = 0; element = document.forms[0].elements[i]; ++i) { // mit element kannst du jetzt auf das Formular-Element zugreifen, z.B. alert(element.type); }
Du musst allerdings beachten, dass du auch den Submit und den Reset-Button bekommst, also must du mit element.type noch entsprechend filtern (if bzw. switch). Und auf den Inhalt einer Textarea kannst du auch ganz normal mit value zugreifen
-
@AJ: Das ist auch eine Möglichkeit, allerding muss er hierzu auch erstmal alle Formularelemente durchgehen.
-
Hmm, er geht bei de Code hier auch nicht in die Schleife rein:
for (var i=0;element=document.forms[0].elements[i];++i) { alert("juhu!"); if (element.type=="checkbox") element.defaultChecked=false; else element.elements[i].defaultValue=""; }
Es kommt keine Fehlermldung, Javascript ist definitiv eingeschaltet
-
Haha, jetz hab ichs:
for (var i=0;!(!document.forms[0].elements[i]);++i) { if (document.forms[0].elements[i].type=="checkbox") document.forms[0].elements[i].defaultChecked=false; else document.forms[0].elements[i].defaultValue=""; }
Doppelte negation... darauf hätte ich aber auch gleich kommen können...
-
Komisch, bei mir lief es auch anders...
-
Naja, weiß nicht, aber wenn das Obhjekt nicht existiert, ist es false... und wenn es nicht false ist (doppelte negation) ist es da... darum eben zweimal dieses Ausrufezeichen.
-
Das man (wenn überhaupt) 2 braucht ist mir schon klar, aber bei mir lief es wie gesagt ganz ohne
-
So gehts auch (ohne die 2 !)
for (var i=0;!(!document.forms[0].elements[i]);++i) { if (document.forms[0].elements[i].type=="checkbox") document.forms[0].elements[i].defaultChecked=false; else document.forms[0].elements[i].defaultValue=""; }
Windoof schrieb:
Hmm, er geht bei de Code hier auch nicht in die Schleife rein:
for (var i=0;element=document.forms[0].elements[i];++i) { alert("juhu!"); if (element.type=="checkbox") element.defaultChecked=false; else element.elements[i].defaultValue=""; }
Es kommt keine Fehlermldung, Javascript ist definitiv eingeschaltet
So gehts nicht, denn deine Zuweisung ist immer true