[JavaScript] form verdeeld over meerdere layers

Pagina: 1
Acties:

  • f1r3b4ll
  • Registratie: Augustus 2000
  • Laatst online: 06-09 16:19
ik ben bezig met een soort wizard op 1 webpagina.

deze wizard bestaat uit een aantal layers die de bezoeker stap voor stap doorloopt.

de wizard gaat over het berekenen van lesgeld voor kinderen die naar de muziekschool gaan

nu heb ik op layer 3 een textbox staan waar de bezoeker een getal in moet tikken. Dit getal is het aantal kinderen wat op les wil (per gezin dus). vervolgens moet aan de hand van dit getal nog een aantal extra layers worden getoond, die per kind vragen welke les hij/zij wil. voorbeeld:

meneer Jansen heeft 2 kinderen, dus voert hij in layer 3 het getal 2 in. hij klikt op volgende en belandt in een for lus die 2x een layer op het scherm tekent met eerst de vraag voor kind 1 en vervolgens de vraag voor kind 2.

nu heb ik 1 probleem: alle layers staan in een formulier, maar hoe kan ik de waarde van de textbox uit layer 3 doorgeven aan layer 4 zonder een submit te gebruiken.

als ik nl een submit gebruik laadt ie de pagina weer opnieuw en begint weer bij de eerste pagina :(


de eigenlijke vraag is dus : zijn er andere manieren om aan een variabele de inhoud van een formulier element toe te wijzen, in plaats van op submit te klikken ???

of zou ik per layer een form moeten maken ipv 1 groot form?

🇳🇱 🔋 Marstek Venus E v3 | EMS xxx, BMS xxx, App vxxx | HW P1 | Marstek CT003 P1 | ☀️14kWp zuid-west+noord-oost


  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

code:
1
2
3
4
5
6
7
8
9
10
11
12
<script language="JavaScript" type="text/javascript">
function getFieldValue ( form, field )
{
   return document.forms [ form ].elements [ field ].value;
}
</script>
<!-- ... -->
<form name="sjako">
   <input type="text" 
        onchange="alert ( getFieldValue ( 'sjako', 'aantal' ) );" 
        name="aantal">
</form>

snap je dat idee? de rest kun je dan zelf wel uitvogelen denk ik

vergeef me m'n aparte code-layout, maar anders verneuk ik de GoT layout weer :(

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • f1r3b4ll
  • Registratie: Augustus 2000
  • Laatst online: 06-09 16:19
kewl is dus eigenlijk het idee dat zodra je iets intikt, hij gelijk de waarde opslaat?

ja ik snap je opzet. ik zal het voorbeeldje ff beetje aanpassen, dan kom ik er wel uit, mocht het toch niet lukken dan meld ik het nog wel


many thanx!!!!

🇳🇱 🔋 Marstek Venus E v3 | EMS xxx, BMS xxx, App vxxx | HW P1 | Marstek CT003 P1 | ☀️14kWp zuid-west+noord-oost


  • f1r3b4ll
  • Registratie: Augustus 2000
  • Laatst online: 06-09 16:19
ok ik ben wat verder maar ik heb alweer een vraagje, het lijkt er op dat hij de variabelen niet wil opslaan.

in de 1e layer heb ik een textbox staan met de volgende code:
code:
1
<input type="text" name="nrkids" size="20" onChange="saveVar('nrkids')">

zodra de bezoeker iets intikt roept hij de functie saveVar aan. we nemen als parameter "nrkids", want dat is nl de textbox waarvan de inhoud moet worden opgeslagen.

nu kom je in de functie saveVar("nrkids"):
code:
1
2
3
4
function saveVar("nrkids")
        {
          results[0] = getFieldValue("nrkids");
        }

deze roept op zijn beurt weer getFieldValue aan:
code:
1
2
3
4
function getFieldValue("nrkids")
        {
          return document.forms['wizard'].elements["nrkids"].value;
        }

getFieldValue geeft de waarde van de textbox terug aan saveVar, die vervolgens de waarde opslaat in een array.

de bovenstaande code staat allemaal in de head, behalve de <INPUT> ofcourze.

in het 2e scherm wil ik vervolgens de inhoud van de array results[] op het scherm hebben met document.write, maar als ik die aanroep verschijnt er "undefined".
Ook als ik
code:
1
document.write(results.length)

doe, geeft hij 0. het lijkt er dus op dat hij de array niet kan vinden, of de functies kloppen niet.

kan iemand me helpen dit euvel op te lossen??? ik zie het nl echt niet !!!!

🇳🇱 🔋 Marstek Venus E v3 | EMS xxx, BMS xxx, App vxxx | HW P1 | Marstek CT003 P1 | ☀️14kWp zuid-west+noord-oost


  • f1r3b4ll
  • Registratie: Augustus 2000
  • Laatst online: 06-09 16:19
niemand ??? :'( :'(

het is onderdeel van een opdracht voor school en het moet af !!!!

🇳🇱 🔋 Marstek Venus E v3 | EMS xxx, BMS xxx, App vxxx | HW P1 | Marstek CT003 P1 | ☀️14kWp zuid-west+noord-oost


  • 2
  • Registratie: November 2000
  • Laatst online: 31-03 13:52

2

Op woensdag 27 maart 2002 18:53 schreef sp_strikwerda het volgende:
code:
1
2
3
4
function saveVar("nrkids")
        {
          results[0] = getFieldValue("nrkids");
        }
Moet dat niet zonder quotes?

function saveVar(nrkids)

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

2:
Moet dat niet zonder quotes?
Jep :)

Alleen bij aanroepen stop je een string in de functie, vervolgens heeft binnen de functie het n-de argument de waarde van het n-de argument wat meegegeven is, en dat argument is vervolgens binnen de functie een lokale variabele geworden.

dus:
code:
1
2
3
4
5
6
7
8
9
10
11
function f ( arg1, arg2 )
{
   // hier heb je nu 2 lokale variabelen 
   // met resp. de namen arg1 en arg2
   // de waarden daarvan "lees je uit" of "gebruik je"
   // op exact dezelfde manier als andere variabelen:
   alert ( arg1 );
   alert ( arg2 );
   // of document.forms [ 'sjako' ].elements [ arg1 ] so
   // you wish :)
}

En de functie roep je aan met een string als je de inhoud "constant" wilt bepalen:
code:
1
2
// alert dus de waarden "string1" en "string2"
f ( "string1", "string2" );

Of geef aan dat je een kopie wilt meegeven van andere variabelen:
code:
1
2
3
4
// alert de waarden "var1" en "var2"
var   var1 = "var1",
    var2 = "var2";
f ( var1, var2 );

hth :)

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


  • f1r3b4ll
  • Registratie: Augustus 2000
  • Laatst online: 06-09 16:19
ik heb het ff nagevraagd op school.

het bleek dat het javascript in de 4e layer meteen al bij het laden van de pagina werd uitgevoerd, en de variabele op dat moment nog geen waarde had. (had ik kunnen weten omdat het script tussen <body> en </body> staat |:( ).

die docent gaf me het advies om een functie te maken die de innerhtml van de layer later aanpast zodat de variabele wel goed wordt weergegeven.

't is toch altijd weer een kwestie van je gezonde verstand gebruiken :)

🇳🇱 🔋 Marstek Venus E v3 | EMS xxx, BMS xxx, App vxxx | HW P1 | Marstek CT003 P1 | ☀️14kWp zuid-west+noord-oost

Pagina: 1