Avatar billede gertnissen Nybegynder
16. december 2004 - 23:00 Der er 7 kommentarer og
1 løsning

Clear af form elementer (ikke reset)

Jeg har en HTML FORM, hvor der skal være en clear knap, der fjerner alt indhold fra alle felter (input, hidden, checkbox, select osv). Ikke en RESET knap der blot ændre indholdet til det der oprindeligt var ved load af siden.

Jeg kan naturligvis hardcode value="" fra et Javascript på dem alle en for en, MEN kan man ikke gøre det lidt mere smart med en løkke der løber alle elementer igennem som et array, med den længde/antal elementer formen nu en gang har via DOM.

Dermed kan koden i princippet genbruges på alle efterfølgende clear knapper uanset name på de enkelte form elementer.

Er der nogle der kan hjælpe med en stump JavaScript kode, der fjerner indholdet i en form, uanset det initielle indhold og antallet/typen/navn/value af elementerne i formen ?
Avatar billede olebole Juniormester
16. december 2004 - 23:14 #1
<ole>

var f = document.FORM_NAVN;
for (i=0; i<f.elements.length; i++) {
    f.elements[i].value = "";
}

/mvh
</bole>
Avatar billede gertnissen Nybegynder
16. december 2004 - 23:31 #2
Jeg kan ikke få det til at virke - kan du se hvad der er galt ?

<html>
<head>
<script language="JavaScript">
function clear()
{  var f = document.FORM;for (i=0; i<f.elements.length; i++) {f.elements[i].value = "";} }
</script>
</head>
<body>
<FORM ACTION="benzin.asp" METHOD="POST">
  <table width="490" border="0" cellspacing="0" cellpadding="0">
    <tr><td> </td><td></td></tr>
    <tr><td>Dato:  </td> <td><input TYPE="text" name="dato"  size="10" value=""> </td></tr>
    <tr><td>Tank:  </td> <td><input type="text" name="tank"  size="35" value=""> </td></tr>
    <tr><td>Liter: </td> <td><input type="text" name="liter" size="5" value="">  </td></tr>
    <tr><td>Kr:    </td> <td><input type="text" name="kr"    size="5" value="">  </td></tr>
    <tr><td>Km:    </td> <td><input type="text" name="km"    size="6" value="">  </td></tr>
    <tr><td>Clear:</td> <td><input type="button" name="Clear" value="Clear" onclick="clear();">      </td></tr>
    <tr><td>Submit:</td> <td><input type="submit" value="submit">      </td></tr>
  </table>
<input type="hidden" name="id" value="">  </td></tr>
</FORM>
</body>
</html>
Avatar billede olebole Juniormester
16. december 2004 - 23:46 #3
<script language="JavaScript">
function clear()
{  var f = document.myForm;for (i=0; i<f.elements.length; i++) {f.elements[i].value = "";} }
</script>

<form name="myForm" ......>
Avatar billede gertnissen Nybegynder
16. december 2004 - 23:51 #4
Det virker heller ikke selv om at jeg giver formen et navn. Hedder en form ikke altid blot form når den ikke er navngivet ?

Hvis jeg ændre til
<script language="JavaScript">
function clear()
{  alert('HALLO'); }
</script>

Sker der intet ??
Avatar billede gertnissen Nybegynder
16. december 2004 - 23:53 #5
Men skriver jeg alert() direkte i onclick kommer den fint op !!
Avatar billede olebole Juniormester
17. december 2004 - 00:48 #6
Det er klart, funktionen skal hedde noget andet ... 'clear' er et reserveret ord i JScript. Kald den f.eks. 'myClear'.

Og nej, en form hedder det, du kalder den ... og det er aldrig 'form'. 'form' er et reserveret ord i JavaScript  :)
Avatar billede gertnissen Nybegynder
17. december 2004 - 09:48 #7
sorry, det var bare ikke helt klart for mig.

Det virker fint nu, udover at teksten på knapperne også slettes, men det kræver vel bare en lille test inden f.elements[i].value = "", eller .. ?

Tak for hjælpen.
Avatar billede olebole Juniormester
17. december 2004 - 15:29 #8
Ja, der kan du teste på elementets tagName (hvis du bruger et <button></button> element i stedet for et <input type="button">) ... eller du kan sætte en class på de elementer, der ikke må clear'es - og så teste på deres className:
  if (f.elements[i].className!="uglegylp") f.elements[i].value = "";
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester