Avatar billede kaptajnknas Nybegynder
23. oktober 2007 - 13:54 Der er 46 kommentarer og
1 løsning

Nulstille formular

Kan man med java-script nulstille en formular?
Avatar billede fennec Nybegynder
23. oktober 2007 - 13:58 #1
Lav en reset knap:
<input type="reset" value="rens">
Avatar billede sherlock Nybegynder
23. oktober 2007 - 14:05 #2
Form Object Methods
reset() - Used to reset the form elements to their default values.
submit() - Submits the form as though the submit button were pressed by the user
Avatar billede kaptajnknas Nybegynder
23. oktober 2007 - 14:16 #3
Handlingen skal udføres når jeg klikker på et link.
Det er nok lidt specielt?
Avatar billede kaptajnknas Nybegynder
23. oktober 2007 - 14:17 #4
måske noget med onclik = reset()
Avatar billede sherlock Nybegynder
23. oktober 2007 - 14:18 #5
<a href="#" onclick="myform.reset()">Nulstil formular</a>
Avatar billede kaptajnknas Nybegynder
23. oktober 2007 - 14:31 #6
Har prøvet det her, men intet sker:

Response.Write "<a href=""new.asp?com=6"" target=""iframe"" onclick=""myform.reset();"">
Avatar billede sherlock Nybegynder
23. oktober 2007 - 14:48 #7
Du skal udskifte myform med en reference til din form.
Avatar billede kaptajnknas Nybegynder
23. oktober 2007 - 14:48 #8
Jeg har godt nok 2 formularer på denne side, kan det være problemet?
Avatar billede kaptajnknas Nybegynder
23. oktober 2007 - 14:48 #9
sherlock >> det har jeg også gjort..
Avatar billede kaptajnknas Nybegynder
23. oktober 2007 - 14:55 #10
Hvis man ikke kan resette, er det så istedet muligt at erstatte formularfeltet med en anden tekst?
Avatar billede olebole Juniormester
23. oktober 2007 - 14:57 #11
<ole>

Man kan sagtens resette en form.

Hvad prøver du med target="iframe"? Du kan ikke ramme en form i en iframe med dén kode. Er det, hvad du prøver, eller er det et tilfælde?

/mvh
</bole>
Avatar billede fennec Nybegynder
23. oktober 2007 - 14:58 #12
<form name="myForm1" method="post" action="<%= scriptname %>">
<input type="Text" name="test1" size="30"><br>
<input type="Text" name="test2" size="30" value="Dette står igen efter reset"><br>
<a href="#" onclick="document.myForm1.reset();">Reset</a>
</form>

<form name="myForm2" method="post" action="<%= scriptname %>">
<input type="Text" name="test1" size="30"><br>
<input type="Text" name="test2" size="30" value="Dette står igen efter reset"><br>
<a href="#" onclick="document.myForm2.reset();">Reset</a>
</form>
Avatar billede fennec Nybegynder
23. oktober 2007 - 14:59 #13
Ahh. Glem min kode. Havde ikke set det med iFramen....
Avatar billede sherlock Nybegynder
23. oktober 2007 - 15:05 #14
test.htm =

<html>
<body>
<iframe src="iframe.htm" id="formframe"></iframe>
<a href="#" onclick="document.frames.formframe.myForm1.reset();">Reset</a>
</body>
</html>


iframe.htm =

<html>
<body>
<form name="myForm1" method="post" action="<%= scriptname %>">
<input type="Text" name="test1" size="30"><br>
<input type="Text" name="test2" size="30" value="Dette står igen efter reset"><br>
</form>
</body>
</html>
Avatar billede kaptajnknas Nybegynder
23. oktober 2007 - 15:13 #15
Nej nej, formularen ligger på samme side som linket.
Avatar billede kaptajnknas Nybegynder
23. oktober 2007 - 15:17 #16
Øjeblik... jeg roder i det nu.
Formuleren er allerede nulstillet, men jeg har så brug for at erstatte teksten i min rulleformular med "klar" ved onclick.
Avatar billede sherlock Nybegynder
23. oktober 2007 - 15:18 #17
Nåmen så er det fennecs eksempel, du skal inspireres af.
Avatar billede kaptajnknas Nybegynder
23. oktober 2007 - 15:21 #18
Det bliver vel noget med
document.form.navn.value=klar;
Avatar billede kaptajnknas Nybegynder
23. oktober 2007 - 16:18 #19
Hm. nogen ide til hvorfor det heller ikke virker?
document.form.navn.value=klar;
Avatar billede sherlock Nybegynder
23. oktober 2007 - 16:25 #20
Må vi se din kode?
Avatar billede fennec Nybegynder
23. oktober 2007 - 16:31 #21
Du skal indsætter en tekst:
document.form.navn.value='klar';
Avatar billede kaptajnknas Nybegynder
23. oktober 2007 - 16:48 #22
Ok. nu ser koden sådan ud.:
onclick=""document.show.navn.value='klar'""

Men formularfeltet bliver bare blank, der kommer åbenbart ingen værdi med.
Avatar billede kaptajnknas Nybegynder
23. oktober 2007 - 17:19 #23
Jeg har prøvet med et alm. tekstfelt, så virker det, men bare ikke i en rullemenu.
Det er måske ikke muligt?
Avatar billede kaptajnknas Nybegynder
23. oktober 2007 - 18:53 #24
Skal vi sige at dette ikke kan lade sig gøre og lukke spg.?
Avatar billede w13 Novice
23. oktober 2007 - 19:30 #25
Det kan sagtens lade sig gøre, der skal bare lidt mere til at rode med rullemenuer. Det er let nok.. hvis man kan huske hvordan. Og jeg må nok indrømme, at jeg er lidt rusten der. Jeg er sikker på, nogle af de andre herinde nok skal kunne ryste noget ud af ærmet, nu hvor vi ved, hvad du vil.
Avatar billede w13 Novice
23. oktober 2007 - 19:31 #26
Grunden til at det har taget så lang tid, er jo nok pga. din problembeskrivelse: "Kan man nulstille en formular med javascript", når du i virkeligheden vil have indsat teksten "Klar" i en rullemenu. =) Der er en vag forskel der.
Avatar billede kaptajnknas Nybegynder
23. oktober 2007 - 19:50 #27
w13 >> beklager det var min fejl og en lidt dårlig overskrift på spørgsmålet.
Men jeg lader spørgsmålet stå lidt, måske kommer der en med en løsning. :-)
Avatar billede sherlock Nybegynder
23. oktober 2007 - 20:02 #28
Må vi ikke nok se din kode? :)
Avatar billede olebole Juniormester
23. oktober 2007 - 20:11 #29
Hjælper det her dig noget?

<form name="foo">
<select name="bar">
    <option value="val_0">Tekst 0</option>
    <option value="val_1">Tekst 1</option>
    <option value="val_2">Tekst 2</option>
    <option value="val_3">Tekst 3</option>
    <option value="val_4">Tekst 4</option>
</select>
</form>

<p><a href="#" onclick="document.getElementsByName('bar')[0].selectedIndex=2;return false">Sæt select</a></p>
<p>Eller:</p>
<p><a href="#" onclick="document.foo.bar.selectedIndex=2;return false">Sæt select</a></p>
Avatar billede olebole Juniormester
23. oktober 2007 - 20:15 #30
- men jeg forstår ikke rigtig, for det her virker da fint:

<form name="foo">
<select name="bar">
    <option value="-1">Klar</option>
    <option value="val_1">Tekst 1</option>
    <option value="val_2">Tekst 2</option>
    <option value="val_3">Tekst 3</option>
    <option value="val_4">Tekst 4</option>
</select>
</form>

<p><a href="#" onclick="document.foo.reset();return false">Reset</a></p>
Avatar billede kaptajnknas Nybegynder
23. oktober 2007 - 20:16 #31
Der er ikke så meget kode.:

<a href="#" onclick="document.navn.navn.value='klar';">vis navn</a>
<form method="POST" action="#" name="navn">
<p><select size="1" name="navn">
<option>vælg</option>
<option value="allan">allan</option>
</select></p>
</form>
Avatar billede kaptajnknas Nybegynder
23. oktober 2007 - 20:18 #32
Ole >> Formularen er nulstillet, men teksten skal ændres til "klar", når der klikkes på linket.
Avatar billede sherlock Nybegynder
23. oktober 2007 - 20:24 #33
<form name="foo">
<select name="bar">
    <option value="-1" selected>Klar</option>
    <option value="val_1">Tekst 1</option>
    <option value="val_2">Tekst 2</option>
    <option value="val_3">Tekst 3</option>
    <option value="val_4">Tekst 4</option>
</select>
</form>

<p><a href="#" onclick="document.foo.reset();return false">Reset</a></p>
Avatar billede sherlock Nybegynder
23. oktober 2007 - 20:26 #34
Der skal være en option med værdien "Klar", hvis du vil have det til at stå i feltet.
Avatar billede kaptajnknas Nybegynder
23. oktober 2007 - 20:34 #35
Formularen er stadig nulstillet >> sherlock.
Det skal virke som koden jeg sendte, ved ikke om man her kan sætte en option ind som value ?

<a href="#" onclick="document.navn.navn.value='klar';">vis navn</a>
<form method="POST" action="#" name="navn">
<p><select size="1" name="navn">
<option>vælg</option>
<option value="allan">allan</option>
</select></p>
</form>
Avatar billede olebole Juniormester
23. oktober 2007 - 20:38 #36
<script type="text/JavaScript">
function setText(sStr) {
    var oSel = document.getElementsByName("bar")[0];
    var oOpt = oSel.getElementsByTagName("option")[0];
    if (oOpt.value==-1) return oSel.selectedIndex = 0;
    oOpt = oOpt.cloneNode(true);
    oOpt.firstChild.nodeValue = sStr;
    oOpt.value = -1;
    oSel.insertBefore(oOpt, oSel.firstChild);
    oSel.selectedIndex = 0;
}
</script>

<form name="foo">
<select name="bar">
    <option value="val_0">Tekst 0</option>
    <option value="val_1">Tekst 1</option>
    <option value="val_2">Tekst 2</option>
    <option value="val_3">Tekst 3</option>
    <option value="val_4">Tekst 4</option>
</select>
</form>

<p><a href="#" onclick="setText('Klar ...');return false">Sæt select</a></p>
Avatar billede olebole Juniormester
23. oktober 2007 - 20:39 #37
- men sherlock's fra (23/10-2007 20:24:15) burde da også virke  :)
Avatar billede olebole Juniormester
23. oktober 2007 - 20:41 #38
<a href="#" onclick="document.myForm.navn.options[0].text='klar';document.myForm.navn.selectedIndex=0">vis navn</a>
<form method="POST" action="#" name="myForm">
<p><select size="1" name="navn">
<option>vælg</option>
<option value="allan">allan</option>
</select></p>
</form>
Avatar billede sherlock Nybegynder
23. oktober 2007 - 20:52 #39
>> options[0].text='klar';

Det er sq da dét :)
Avatar billede kaptajnknas Nybegynder
23. oktober 2007 - 20:55 #40
Perfekt. OLE det virker sku. :oD
Avatar billede kaptajnknas Nybegynder
23. oktober 2007 - 21:17 #41
Takker for hjælpen._:)
Avatar billede olebole Juniormester
23. oktober 2007 - 23:36 #42
Du kan også gøre det med DOM:

<script type="text/JavaScript">
function setText(sName, sStr) {
    var oSel = document.getElementsByName(sName)[0];
    var oOpt = oSel.getElementsByTagName("option")[0];
    oOpt.firstChild.nodeValue = sStr;
    oSel.selectedIndex = 0;
}
</script>

<a href="#" onclick="setText('navn', 'klar')">vis navn</a>

<form method="POST" action="#" name="myForm">
<p><select size="1" name="navn">
<option>vælg</option>
<option value="allan">allan</option>
</select
Avatar billede olebole Juniormester
23. oktober 2007 - 23:36 #43
:)
Avatar billede kaptajnknas Nybegynder
24. oktober 2007 - 10:20 #44
Points.:)
Er DOM en bedre løsning?
Avatar billede olebole Juniormester
24. oktober 2007 - 15:07 #45
Tak for points  :)

DOM er i hvert fald fremtidens løsning. Under XHTML kan f.eks. slet ikke bruge adresseringer à la: document.myForm.navn - der _skal_ du bruge DOM. Også når du skal ændre på HTML'en i dokument er DOM måden at gøre det på. InnerHTML er i denne forbindelse oldnordisk (et levn fra version 4 browserne) og ødelægger voldsomt meget mere, end den gavner ... og så har den aldrig været valid nogen steder. Til gengæld er den suveræn at teste med - men brug den _kun_ til det!  ;o)

At vi så har problemer med standardernes inkonsistens, er en helt anden ting. Man kan således ikke læse formfelters dynamiske indhold med DOM.
Det betyder, at hvis en bruger skriver noget i et felt - og du efterfølgende prøver at aflæse feltets værdi med getAttibute, vil du få returneret den værdi, koderen har skrevet i feltets value-attribut ... ikke det, brugeren har skrevet. Det er et klart hul i DOM-rekomandationerne ... ikke mindst ECMA-DOM bindingerne.

Når XHTML 2.0 kommer på banen, forsvinder de forms, vi i dag kender, fuldstændig - og afløses af XForms. Så kan vi forhåbentlig endelig begynde at bruge DOM på form-felter (når altså også browserne understøtter XHTML 2.0. I dag kan ingen browser såmænd levere stort andet end en faked understøttelse af version 1.0 og 1.1)
Avatar billede kaptajnknas Nybegynder
25. oktober 2007 - 10:23 #46
Tak for info Ole.
Det virker lige en anelse indviklet det med DOM, så den tager vi sikkert senere igen.
Avatar billede olebole Juniormester
25. oktober 2007 - 10:30 #47
Det var så lidt. Naturligvis er der lidt besværligheder i DOM (sådan er det med alt), men når man først får fat i det, er det absolut til at have med at gøre. Det skal vi nok få talt mere om  ;o)
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