Avatar billede i-mox Nybegynder
15. juli 2005 - 13:33 Der er 10 kommentarer og
1 løsning

Indsætte en variabel i form, action

Hejsa

Jeg vil meget gerne indsætte en variabel i min <form action="">

Variablen hedder activediv, og bruges i en side med flere divisions til at skifte mellem disse. Der er en submit knap i alle disse divisions og det jeg så ønsker at opnå er at når brugeren trykker gem i f.eks. "tekstdiv" gemmes siden, og brugeren transporteres tilbage til den samme div.

Jeg har alt scriptingen på plads, så det eneste jeg mangler er altså følgende linje:

<form style="margin:0px;" method=post onsubmit="convertEditProduct()" action="handler.asp?id_prod=<%=rsP("id_prod")%>&action=save_product&activediv=[AKTIVEDIV]">

Hvor activediv skal sættes til activediv (JS variabel) når formularen afsendes.

På forhånd tak for hjælpen.
Avatar billede olebole Juniormester
15. juli 2005 - 17:25 #1
<ole>

Prøv enten en forklaring i lidt mere 'standardiseret' sprog - eller i et sprog, der slet ikke har noget med kodning at gøre. Forklaringen er ret utydelig, som den er  :)

/mvh
</bole>
Avatar billede olebole Juniormester
15. juli 2005 - 17:28 #2
- hvad er'divisions' - og hvad betyder: "brugeren transporteres tilbage til den samme div"?
Hvor kommer variablen fra - og på hvilken brugerhandling skal den sættes på din action?
Hvordan submitter du din form ... via JS eller med en 'ægte' submitknap?
Avatar billede i-mox Nybegynder
15. juli 2005 - 17:32 #3
En division er et <div> tag, som jeg skjuler/viser vha. en javascript funktion efter behov.

Siden er opdelt i flere <div>'s som indeholder en del af den samlede formular.

Når en bruger submitter formularen til en database handler gemmes hele formularen.

Hvis brugeren f.eks. var i gang med at rette i den division der hedder "tekstdiv" ville det jo være rart for brugeren automatisk at få vist denne bagefter.

Den eneste måde jeg kan gøre dette på er at sende et parameter med til handleren, som returneres til siden når den er opdateret i databasen.

Altså. Hvilken <div> er activediv (dette er en var i mit JS script), og hvordan får jeg den ind i min action=""?

Er det klarere nu.
Avatar billede olebole Juniormester
15. juli 2005 - 17:46 #4
For det første virker det helt sort, du roder rundt med både en get- og en post-query i samme form. Det ses af og til, men det har ved Gud aldrig været smart  :)

Skulle jeg lave samme projekt ville jeg skrive:

<form id="myForm" style="margin:0px;" method=post onsubmit="convertEditProduct()" action="handler.asp">
<input type="hidden" name="id_prod" value="<%=rsP("id_prod")%>">
<input type="hidden" name="myAction" id="myAction" value="">

- og så sætte value på feltet 'myAction', hvergang du viser et div. æg i øvrigt mærke til, at 'action' er et rigtig dårlig valgt navn  ;o)

document.getElementById("myAction") = [DIV-ID]
Avatar billede olebole Juniormester
15. juli 2005 - 17:47 #5
Oooops .... document.getElementById("myAction").value = [DIV-ID]
Avatar billede i-mox Nybegynder
15. juli 2005 - 17:58 #6
der er flere årsager til at tingene hedder hvad de hedder

action bliver samlet op i vbscript i handleren, og er ikke direkte js.

samtidig er det en meget kompleks formular.

Så action og activediv er på ingen måde det samme.

Der er i øvrigt ikke noget get i samme formular. Hvor får du det fra?
Avatar billede olebole Juniormester
15. juli 2005 - 18:15 #7
Variabler, der medsendes i en forms action, sendes som GET-variabler - så det har jeg fra din kode  :)

En enorm mængde spørgsmål på Eksperten skyldes dårlig navngivnings vaner ... herunder felter med navnet 'action' og knapper, der hedder 'submit'. Hvad der sker i din form lige nu, er uden interesse. God kodeskik er at skrive sin kode, så enhver koder kan overtage den og videreudvikle på den uden problemer. Derfor bruger man ikke den slags navne  ;o)

Jeg havde overset en ampersand i din action - hvorfor formen naturligvis bør se sådan ud:

<form style="margin:0px;" method=post onsubmit="convertEditProduct()" action="handler.asp">
<input type="hidden" name="id_prod" value="<%=rsP("id_prod")%>">
<input type="hidden" name="myAction" value="save_product">
<input type="hidden" name="activediv" value="">

document.getElementById("activediv") = [DIV-ID]

En detalje, der ikke ændrer på det principielle i problematikken  :)
Avatar billede olebole Juniormester
15. juli 2005 - 18:22 #8
PS: kompleksiteten betyder intet for, hvordan en form bør skrives og/eller behandles  :)
Avatar billede i-mox Nybegynder
15. juli 2005 - 18:25 #9
Nej - det har du selvsagt ret i :-)

Mht. til GET metoden har du ret, men det er efterhånden ret almindelig skik (i hvert fald i de kredse jeg færdes.)

Jeg har til gengæld fanget hvad du mener mht. til en hidden input, som opdateres løbende... OG det er løsning på mit problem, så jeg takker og bukker.

Gider du smide et svar?
Avatar billede i-mox Nybegynder
16. september 2005 - 12:16 #10
Vil du ha point?
Avatar billede olebole Juniormester
16. september 2005 - 14:44 #11
Du færdes i dårlige kredse. Det er svært at se en fornuftig begrundelse for at rode sig ud i at fordele sit varable-scope på både GET og POST. En fjollet, lille modegrille, der i værste fald kan blive fatal, hvis man ikke er yderst opmærksom  :)
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