Avatar billede jakobsynder Nybegynder
03. september 2003 - 11:53 Der er 12 kommentarer og
3 løsninger

Tjek 'klassen', ikke 'objektet'?

Hej eksperter.

I en formular, hvor der i forvejen står noget i diverse felter, er en reset knap ikke ret funktionsdygtig som "slet alt" knap.
Er det muligt at lave en button med noget a la:

document.formnavn.allefelter.value = ""

- Eller er jeg nødt til at definere hvert enkelt felt?

(Jeg har mange formularer med mange felter...)

På forhånd tak

Mvh. Jakob
Avatar billede nikolajdu Nybegynder
03. september 2003 - 12:30 #1
for (i=0; i<=document.forms[0].elements.length;i++){
document.forms[0].elements[i].value = "";
}

Sådan i den dur?
Avatar billede roenving Novice
03. september 2003 - 12:31 #2
Kan du ikke finde en måde at gruppere dem på logisk ?-)

-- fordi du lige brugte ordet 'klassen' i overskriften kom jeg umiddelbart til at tænke på class="sletFelter" og så:

function sletFelter(f){
  for(i=0;f.elements.length>i;i++){
    if(f.elements[i].className=="sletFelter")f.elements.value="";
  }
}

-- du kan tilsvarende teste for f.eks. type i inputs m.m.
Avatar billede =maddog= Nybegynder
03. september 2003 - 12:36 #3
kan du ikke sætte
<input type="reset" value="Reset" name="reset" id="reset" style="display:none;" />
ind i din form og bruge
document.formnavn.reset.click();
Avatar billede nikolajdu Nybegynder
03. september 2003 - 12:37 #4
Jeg ved ikke om jeg tog fejl men valgte at ignorere "klassen" da jeg læste spørgsmålet igennem????
Avatar billede =maddog= Nybegynder
03. september 2003 - 12:48 #5
Det her skulle illustrere forskellen mellem de to fremgangsmåder (hidden reset vs. iterativ overskrivning)
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head><title>Untitled</title>
<script type="text/javascript">
function sletFelter(f){
  for(i=0;f.elements.length>i;i++){
    f.elements[i].value="";
  }
}
</script>
</head>
<body>
<form name="myform">
<input type="text" name="text01" value="Skriv dit navn">
<input type="text" name="text02" value="Skriv din stilling">
<input type="text" name="text03" value="Din livret">
<input type="reset" value="Reset" name="reset" id="reset" style="display:none;">
</form>
<a href="#" onclick="document.myform.reset.click(); return false;">Brug =maddog='s forslag</a>
<a href="#" onclick="sletFelter(document.myform); return false;">Brug roenving's forslag</a>
</body>
</html>
Avatar billede jakobsynder Nybegynder
03. september 2003 - 12:53 #6
Hej.

Undskyld jeg formulerede mig så åndsvagt mht. klasser.
Jeg tænkte i form af at begrebet felt er en klasse, og et specifikt felt er et objekt. Beklager.

Løsning 1 virkede helt glimrende, bortset fra at den naturligvis også sletter værdien af både submit og slet knappen, hehe, hvor løsning 2 jo tjekker på css klassen, hvilket må være det optimale.

I virkeligheden havde svaret "elements" stillet mig tilfreds :-)

Jeg vil gerne fordele points på jer alle tre for henholdsvis hurtighed, præcision og kreativitet, hvis det er ok?
Avatar billede roenving Novice
03. september 2003 - 13:00 #7
Velbekomme, og hvis du så tilføjer rens-felt option:

onfocus="if(this.value==this.defaultValue)this.value='';" onblur="if(this.value=='')this.value=this.defaultValue;"

til hvert felt og iøvrigt ændrer min kode til:

f.elements[i].value=f.elements[i].defaultValue;

-- så får du en vældig operationel kode !-)
Avatar billede nikolajdu Nybegynder
03. september 2003 - 13:02 #8
:))
for (i=0; i<=document.forms[0].elements.length;i++){
if (document.f.elements[i].type!="sumbit"||document.f.elements[i].type!="reset"){
document.forms[0].elements[i].value = "";
}
}

Bare for at være på tværs... :))

/Nikolaj
Avatar billede nikolajdu Nybegynder
03. september 2003 - 13:03 #9
Og hvis du selv lige kan rette det nordafrikanske "sumbit" til det rigtige ville det være i øjet  ;-)
Avatar billede =maddog= Nybegynder
03. september 2003 - 13:08 #10
Jeg vil så straks ligge et svar. Håber forskellen er tydelig i øvrigt. En reset vil sætte værdierne tilbage til default, mens overskrivning typisk vil nulstille fuldstændigt.
Avatar billede roenving Novice
03. september 2003 - 13:11 #11
Men omstillingen af mit script var jo præcis et spørgsmål om at vælge en anden parameter til tildelingen af værdi ?-)
Avatar billede jakobsynder Nybegynder
03. september 2003 - 13:12 #12
Hehe, i er vist småskøre herinde, godt jeg ikke kommer i denne kategori alt for tit :P

maddog >> Ja, det var jo netop min pointe, jeg laver nemlig serverside tjek, for at se om input'et eksisterer i databasen i forvejen, og hvis det er sagen, vil man få returneret en fejl meddelelse, og af brugervenlighed vil de førindtastede input naturligvis blive stående i felterne.
Hvis man trykker reset vil værdierne ikke blive slettet, men blive sat til det de var. Nå nok om det.

Tak for hjælpen gutter og hav en god dag!
Avatar billede roenving Novice
03. september 2003 - 13:15 #13
-- og tak for points ;~}
Avatar billede nikolajdu Nybegynder
03. september 2003 - 13:30 #14
Det er jo det dejlige i den her kategori at man kan få 3 forskellige løsninger indenfor 6 minutter og kald os så skøre bagefter.

Tak for points :))

/Nikolaj
Avatar billede =maddog= Nybegynder
03. september 2003 - 14:23 #15
man skal være småskør for at kode javascript.
jeg takker også nådigst for point.
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