Avatar billede kaptajnknas Nybegynder
20. december 2003 - 15:34 Der er 47 kommentarer og
1 løsning

Disable formular ved submit

Er det muligt at disable en formular, altså alle formular felter, når man trykker på submit?
Avatar billede ztyxx Nybegynder
20. december 2003 - 15:48 #1
du kan disable submitknappen

<input type="submit" value="Klik" onclick="this.disabled='true'">
Avatar billede roenving Novice
20. december 2003 - 15:49 #2
<input type="submit" value="Send" onclick="elms=this.form.elements;for(i=0;elms.length>i;i++){elms[i].disabled=true;}">
Avatar billede ztyxx Nybegynder
20. december 2003 - 15:51 #3
en meget smartere måde, roenving du er sq haj :-)
Avatar billede skovenborg Nybegynder
20. december 2003 - 15:54 #4
...ud over der nok skal stå elms.length<i
bare lige så du ikke ryger ud i problemmer.
Avatar billede roenving Novice
20. december 2003 - 15:55 #5
-- øh, skovenborg ...
Avatar billede nak-m Nybegynder
20. december 2003 - 15:57 #6
skovenborg: ?
Avatar billede skovenborg Nybegynder
20. december 2003 - 15:58 #7
nå det var vist bare mig - undskyld ;-)

det bare fordi du skrev det på en anden måde end jeg er vant til - ville selv have skrevet i<elms.length
Avatar billede skovenborg Nybegynder
20. december 2003 - 15:58 #8
det var rækkefølgen der forvirrede - men ellers glædelig jul da :-)
Avatar billede roenving Novice
20. december 2003 - 16:00 #9
Ja, du har ret i, at det er en anden måde, men jeg har gjort det til en vane sjældent at bruge <, for webwriteren bliver forvirret af den !-)
Avatar billede kaptajnknas Nybegynder
20. december 2003 - 16:00 #10
Som det er nu, disabler submit knappen også, men jeg vil gerne ha hele formularen...
Hm, roenving, hvordan får jeg dit foreslag sat ind i denne linie?

Response.Write("else {document.tal.spil.disabled = true; return true}"& vbNewLine)
Avatar billede roenving Novice
20. december 2003 - 16:01 #11
Hvor har du den linje ?-)
Avatar billede kaptajnknas Nybegynder
20. december 2003 - 16:04 #12
Ved onsubmit kører jeg denne:
onsubmit=""return tjek()""

og her efter kommer...

Response.Write("else {document.tal.spil.disabled = true; return true}"& vbNewLine)
Avatar billede roenving Novice
20. december 2003 - 16:07 #13
Send formen med som parameter, så får du en slankere kode:

onsubmit=""return tjek(this)""

function tjek(f){


Response.Write("else {f.spil.disabled = true; return true}"& vbNewLine)

-- og omskrivningen bliver så:

Response.Write("else {elms=f.elements;for(i=0;elms.length>i;i++){elms[i].disabled=true;}; return true}"& vbNewLine)
Avatar billede kaptajnknas Nybegynder
20. december 2003 - 16:17 #14
Når jeg gør det, får jeg fejl:

Microsoft][ODBC Microsoft Access Driver] Syntax error in INSERT INTO statement.
Avatar billede roenving Novice
20. december 2003 - 16:18 #15
Det er en fejl fra en sql-sætning ?-)
Avatar billede thesurfer Nybegynder
20. december 2003 - 16:21 #16
Hehe.. det ville jeg også gætte på :)
kaptajnknas> Skriv lige din sql sætning
Avatar billede kaptajnknas Nybegynder
20. december 2003 - 16:22 #17
Okay, prøv at se her.
Den her linie diabler submit knappen
Response.Write("else {document.tal.spil.disabled = true; return true}"& vbNewLine)

Den her linie disabler alt, hele formularen, alle felter, men giver samme fejl som den du skrev:
Response.Write("else {document.tal.disabled = true; return true}"& vbNewLine)

Skyldes det så ikke en fejl i disse linier, ellers fungere min formular som den skal
Avatar billede roenving Novice
20. december 2003 - 16:28 #18
Det kan ikke have noget med den linje at gøre (medmidre du har en uafsluttet sql-sætning lige før !-)
Avatar billede kaptajnknas Nybegynder
20. december 2003 - 16:29 #19
Her er Sql'en som submittes til:

Conn.execute "INSERT INTO spil (email, dato, nummer1, nummer2, nummer3, nummer4, nummer5) VALUES ('"&replace(session("email"), "'", "''")&"', #"&ParseDate(date())&"#, "&temp(1)&", "&temp(2)&", "&temp(3)&", "&temp(4)&", "&temp(5)&")"
Avatar billede thesurfer Nybegynder
20. december 2003 - 16:31 #20
Du mangler en del ' tegn..
Avatar billede thesurfer Nybegynder
20. december 2003 - 16:33 #21
Conn.execute "INSERT INTO spil (email, dato, nummer1, nummer2, nummer3, nummer4, nummer5) VALUES ('"&replace(session("email"), "'", "''")&"', '#"&ParseDate(date())&"#', '"&temp(1)&"', '"&temp(2)&"', '"&temp(3)&"', '"&temp(4)&"', '"&temp(5)&"')"

Jeg ved ikke lige om den her er rigtigt:
'#"&ParseDate(date())&"#'

Der skal muligvis ikke være ' tegn omkring det..
Avatar billede kaptajnknas Nybegynder
20. december 2003 - 16:33 #22
Hm, hvor?
Avatar billede kaptajnknas Nybegynder
20. december 2003 - 16:38 #23
thesurfer >> det gør ingen forskel, det som undre mig er, at fejlen kun er der, når formularen disables, så længe det kun er submit knappen der disables er der ingen fejl...
Avatar billede thesurfer Nybegynder
20. december 2003 - 16:44 #24
Jeg forstår ikke hvorfor felterne i en form skal disables ved submit?
Når formen submittes, sendes den til serveren, hvor de behandles (hvis den er indstillet til det), og der kan ikke ændres i de eksisterende værdier.

Hvad er meningen med at disable felterne?
Avatar billede thesurfer Nybegynder
20. december 2003 - 16:45 #25
..Og hvad med at lave dem readonly eller locked i stedet for at disabled dem?
Avatar billede kaptajnknas Nybegynder
20. december 2003 - 16:51 #26
Nu skal der kunne skrives i felter felterne, derfor kan jeg ikke bruge readonly.
Det er ren og skær layout, jeg er klar over at det ikke har nogen praktisk betydning, men layout mæssigt synes jeg det er passende at formularen disables
( dating.dk bruger det også når der sendes interne breve )
Avatar billede thesurfer Nybegynder
20. december 2003 - 16:55 #27
Hvis jeg ikke tager meget fejl, kan du dynamisk skifte felterne til readonly, på samme måde som du skifter til disabled.
Med andre ord: readonly sker ved submit, og ikke fra starten af.
Avatar billede kaptajnknas Nybegynder
20. december 2003 - 16:57 #28
Okay.. det var måske en mulighed??
Avatar billede thesurfer Nybegynder
20. december 2003 - 17:00 #29
Det er roenving der kan det der :)
Men, mon ikke at du bare skal erstatte "disabled" med "readonly"..?
Avatar billede roenving Novice
20. december 2003 - 22:52 #30
readOnly !-)
Avatar billede thesurfer Nybegynder
21. december 2003 - 12:38 #31
roenving har talt! :)
Avatar billede kaptajnknas Nybegynder
21. december 2003 - 12:55 #32
Desværre, det virker ikke, giver ikke nogen effekt, som disabled :-(
Avatar billede thesurfer Nybegynder
21. december 2003 - 13:04 #33
Hvis felterne skal skifte farve, og blive readonly, kan du skifte css class.
Det ved roenving godt hvordan man gør :)

Når du skifter farve, kan du selv vælge farve.. eller effekten..
Avatar billede thesurfer Nybegynder
21. december 2003 - 13:05 #34
Muligvis en ".className = 'klassenavn';"
Avatar billede kaptajnknas Nybegynder
21. december 2003 - 13:15 #35
ok >> thesurfer :-)
Så venter jeg lige på at roenving kommer med et bud på det
Avatar billede roenving Novice
21. december 2003 - 14:23 #36
Det er ikke nogen god ide at skifte klasse på elementer, da browseren skal genberegne hele sit css DOM-træ hver gang, men skifte en property kan anbefales i stedet:

function disForm(f){
  elms=f.elements;
  for(i=0;elms.length>i;i++){
    elms[i].readOnly=true;
    elms[i].style.background="#aaa";
  }
}
Avatar billede kaptajnknas Nybegynder
21. december 2003 - 14:33 #37
Okay... hvor skal jeg sætte funktionen ind?
Avatar billede thesurfer Nybegynder
21. december 2003 - 14:42 #38
Jeg ville tror, at det er onSubmit="return disForm(this)" i selve form-tag'et:
<form .... onSubmit="return disForm(this)">
Avatar billede roenving Novice
21. december 2003 - 19:24 #39
Da vi lige blev koblet af, kunne jeg ikke svare, men det er helt rigtigt, hvad thesurfer har skrevet ...
Avatar billede kaptajnknas Nybegynder
21. december 2003 - 20:19 #40
Noget i stil med det her?

Response.Write("else {elms=f.elements;for(i=0;elms.length>i;i++){elms[i].readOnly=true;elms[i].style.background=""#aaa"";}"& vbNewLine)
Avatar billede roenving Novice
21. december 2003 - 20:55 #41
Ja, prøv det !-)
Avatar billede kaptajnknas Nybegynder
23. december 2003 - 16:45 #42
Det giver scriptfejl :-(
Avatar billede thesurfer Nybegynder
23. december 2003 - 16:54 #43
Når du får en fejl, skriv:
- fejlmeddelelsen (ordret), også selvom du ikke forstår den
- linie nr og selve linie
- evt variabler du bruger
- evt hjemmelavede funktioner du bruger
Avatar billede kaptajnknas Nybegynder
23. december 2003 - 17:02 #44
Når jeg bruger koden, så virker disabled submit ikke og der vises en gul trekant nederst til ventre i browseren
Avatar billede thesurfer Nybegynder
23. december 2003 - 17:10 #45
En lille ændring.. Det her er JavaScript, og der er ikke noget ASP overhovedet:

<SCRIPT LANGUAGE="JavaScript">
<!--
function disForm(f)
{
elms=f.elements;
for(i=0; elms.length > i; i++){
  // Hvis typen er "text", skal den være "readonly", og farven ændres:
  if (elms[i].type == "text") {
    elms[i].readOnly=true;
    elms[i].style.background="#aaa";
  }
  // Hvis typen er "submit", skal den disables:
  if (elms[i].type == "submit") { elms[i].disabled = true; }
  }
return false;
}
//-->
</SCRIPT>

<form onSubmit="return disForm(this)">
<input type="text" value="hello">
<input type="text" value="world">
<input type="submit" value="submit" onClick="alert('clicked');">
</form>

Formen er bare et eksempel. Den disabler også submit-knappen.
Håber at du kan bruge det. Ellers skriv.
Avatar billede thesurfer Nybegynder
23. december 2003 - 17:12 #46
Denne del var bare en test, og skal derfor slettes:
onClick="alert('clicked');"
Avatar billede thesurfer Nybegynder
23. december 2003 - 17:21 #47
Det ville være nemmere, hvis du i JavaScript delen, erstatter " (gåseøjne) med ' (apostroffer).
Så skal du ikke til at tænke på dobbelt antal gåseøjne, for at det virker med ASP koden.
Avatar billede roenving Novice
24. december 2003 - 05:16 #48
Hvis du vil se teksten til en script-fejl, skal du dobbeltklikke på den gule trekant ...
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

IT-JOB