Toon posts:

[JS] Meerdere form vragen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi. Ik heb HIER een bestelformulier gemaakt. De waarden uit de velden worden aan de hand van hun naam in een tabel op een nieuwe html pagina geschreven. Als een veld niets bevat wordt deze ook in de tabel geschreven en dat wil ik gaan voorkomen. Nu wil ik met een if statement checken of er wel iets in het veld zit.

ik maak van de inhoud van elk veld een variabele, voor het "broodje 1" veld:

code:
1
var broodje1 = opener.document.bestelformulier.br1;


Nu wilde ik zoiets als dit doen:

code:
1
2
3
4
5
if(broodje1!="niets"){

Maak rij aan in tabel, en schrijf naam + waarde, etc, etc
}
else if(broodje2!="niets"){etc etc.....


Ik weet echter niet wat op de plaats van "niets" moet komen. Ik heb al null en "" geprobeerd, maar dat werkt niet.

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
code:
1
if (broodje1 != null)

oftewel
code:
1
als (broodje1 niet gelijk is aan niets)

oftewel
code:
1
als (broodje1 gelijk is aan iets)

dus
code:
1
if (broodje1)

edit;
typootje

Verwijderd

Ik weet echter niet wat op de plaats van "niets" moet komen. Ik heb al null en "" geprobeerd, maar dat werkt niet.
Hint:
code:
1
2
alert(Broodje1);
alert(Broodje2);

;)

[ Voor 0% gewijzigd door Verwijderd op 11-10-2002 17:12 . Reden: gaat je niets aan ]


Verwijderd

Typootje? ;)
/me zag een hoopje PHP staan net ;)

  • r0bert
  • Registratie: September 2001
  • Laatst online: 11-08 16:19
Ja.. dat was de derde edit :)

1e: "gelijks" > "gelijk"

2e: laatste "(brood1)" stond "(brood)"

3e: alle [php ] veranderd naar [code ]

Tevree ? :)

Verwijderd

Topicstarter
Hm, het lukt nog steeds niet.

Wie wil er even

http://pagetest.netfirms.com/bestelformulier.html checken?

Ik heb in het bevestigingsform bij de rij van broodje 2 dit gedaan:

code:
1
2
3
4
5
if(broodje2){
        document.write("<tr><td width='140px'>");
        document.write("Broodje 2: </td>");
        document.write("<td><B>&nbsp;" + broodje2.value + "<\/B></td></tr>");
        }


maar ook als je in het bestelformulier bij broodje 2 niets invult wordt de rij van broodje 2 in de bevestigingstabel geschreven. Ligt dit aan het ontbreken van een else / else if ?

/Gratis broodje voor de goede oplossing :P

Verwijderd

Verwijderd schreef op 11 oktober 2002 @ 17:23:
Hm, het lukt nog steeds niet.

Wie wil er even

http://hein.ionichost.com/bestelformulier.html checken?

Ik heb in het bevestigingsform bij de rij van broodje 2 dit gedaan:

code:
1
2
3
4
5
if(broodje2){
        document.write("<tr><td width='140px'>");
        document.write("Broodje 2: </td>");
        document.write("<td><B>&nbsp;" + broodje2.value + "<\/B></td></tr>");
        }


maar ook als je in het bestelformulier bij broodje 2 niets invult wordt de rij van broodje 2 in de bevestigingstabel geschreven. Ligt dit aan het ontbreken van een else / else if ?
Je schrijft nu de rij weg als broodje2 'aangemaakt' is. Aangezien je zelf de var declareert is broodje2 wel 'niets', maar bestaat toch.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:19

crisp

Devver

Pixelated

dit:
JavaScript:
1
var broodje1 = opener.document.bestelformulier.br1;

is enkel een verwijzing naar het veld br1, niet naar de waarde daarvan.
probeer het eens zo (is sowieso netter):
JavaScript:
1
var broodje1 = opener.document.forms['bestelformulier'].elements['br1'].value;

Intentionally left blank


Verwijderd

Topicstarter
Verwijderd schreef op 11 oktober 2002 @ 17:28:
[...]

Je schrijft nu de rij weg als broodje2 'aangemaakt' is. Aangezien je zelf de var declareert is broodje2 wel 'niets', maar bestaat toch.
Ok, die variabele broodje1 bestaat dus idd wel, maar wat is dan de inhoud van die variabele als het bijbehorende textfield (br2) leeg is? Op die inhoud kan ik dan testen.

Een tweede optie is om voor het aanmaken van de variabele broodje2 te testen of er iets in br2 zit.
Kan dat met iets als dit

code:
1
2
if(opener.document.bestelformulier.br1)
{var broodje1=opener.document.bestelformulier.br1}


Sorry, ben nogal een leek op Javascript gebied. Heb overigens wel Java gedaan, maar in mijn Javaboek (deitel & deitel) kom ik weinig over Javascript tegen.

Verwijderd

Topicstarter
crisp schreef op 11 oktober 2002 @ 17:32:
dit:
JavaScript:
1
var broodje1 = opener.document.bestelformulier.br1;

is enkel een verwijzing naar het veld br1, niet naar de waarde daarvan.
probeer het eens zo (is sowieso netter):
JavaScript:
1
var broodje1 = opener.document.forms['bestelformulier'].elements['br1'].value;
Geprobeerd. Of ik iets of niets invul bij broodje 1, in de tabel wordt nu "undefined" als waarde geschreven.

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:19

crisp

Devver

Pixelated

Verwijderd schreef op 11 oktober 2002 @ 17:37:
[...]


Geprobeerd. Of ik iets of niets invul bij broodje 1, in de tabel wordt nu "undefined" als waarde geschreven.
JavaScript:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
var ttestFrm = opener.document.forms['bestelformulier'];
var broodje1 = ttestFrm.elements['br1'].value;
var broodje1 = ttestFrm.elements['br2'].value;

// und so weiter

function setData(){
    
        document.write("<Table width='300px' border='1' cellpadding='4'>");
        document.write("<tr><td><b>Omschrijving</b></td><td><b>Aantal</b></td></tr>");
//broodjes      

        document.write("<tr><td width='140px'>");
        
        document.write("Broodje 1: </td>");
        document.write("<td><B>&nbsp;" + broodje1 + "<\/B></td></tr>");
        if (broodje2) {
        document.write("<tr><td width='140px'>");
        document.write("Broodje 2: </td>");
        document.write("<td><B>&nbsp;" + broodje2 + "<\/B></td></tr>");
        }

// und so weiter


zou moeten werken :?

Intentionally left blank


Verwijderd

Topicstarter
crisp schreef op 11 oktober 2002 @ 17:55:
[...]

[....]
zou moeten werken :?
Ok, het werkt!!!! Bedankt _/-\o_

Verwijderd

Topicstarter
crisp schreef op 11 oktober 2002 @ 17:55:
[...]

........
zou moeten werken :?
Laatste vraag. De variabelen (booodje1, broodje2, soep1, etc) die nu worden gemaakt zijn strings nietwaar? Ze moeten dus naar integers geparsed worden om ermee te rekenen?

  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:19

crisp

Devver

Pixelated

Verwijderd schreef op 11 oktober 2002 @ 18:40:
[...]


Laatste vraag. De variabelen (booodje1, broodje2, soep1, etc) die nu worden gemaakt zijn strings nietwaar? Ze moeten dus naar integers geparsed worden om ermee te rekenen?
Als je wilt optellen wel ja, vermenigvuldigen enzo gaat wel al automatisch goed dankzij de automatische typecasting.
Maar voor de duidelijkheid zou ik de waarden sowieso naar integers parsen:
JavaScript:
1
2
3
4
5
6
7
var totaal = 0;
var broodje1 = parseInt(ttestFrm.elements['br1'].value, 10);
totaal += broodje1 * 2.5; // aantal maal prijs
var broodje2 = parseInt(ttestFrm.elements['br2'].value, 10);
totaal += broodje2 * 2.5; // aantal maal prijs

// etcetera

Intentionally left blank


Verwijderd

Topicstarter
Ok, the story continues.
Ik heb nu op het BESTELFORMULIER een functie calcTotal() toegevoed in de header. Als je op de knop "Bereken Totaal" drukt, telt het script de (ingevulde waarde * artikelprijs) per artikel bij elkaar op en stopt het in een "alert".
Nu wil ik het totaal bedrag liever naar de pagina schrijven dan in een alert. Tips?

Verwijderd

Verwijderd schreef op 11 oktober 2002 @ 19:30:
Ok, the story continues.
Ik heb nu op het BESTELFORMULIER een functie calcTotal() toegevoed in de header. Als je op de knop "Bereken Totaal" drukt, telt het script de (ingevulde waarde * artikelprijs) per artikel bij elkaar op en stopt het in een "alert".
Nu wil ik het totaal bedrag liever naar de pagina schrijven dan in een popup. Tips?
Erg basic.... :?
Bijvoorbeeld met document.write? ;)
Of in een formfield wegschrijven? (innerHTML bijv.)
Of in een divje wegschrijven?
Of.. of...?

Verwijderd

Topicstarter
Verwijderd schreef op 11 oktober 2002 @ 19:35:
[...]

Erg basic.... :?
Bijvoorbeeld met document.write? ;)
Of in een formfield wegschrijven? (innerHTML bijv.)
Of in een divje wegschrijven?
Of.. of...?
InnerHTML lijkt me een goede optie. Ik heb een manier gevonden om gewoon tekst te rplacen in een pagina. Hierbij gebeuren alle handelingen in de body. Echter, als je de "bereken totaal" knop indrukt wordt eerst calcTotal() in de header aangeroepen. Hierin wordt de variabele 'total' berekend. Het probleem is juist hoe ik die waarde weer naar de body krijg zonder de pagina te reloaden. Kan dat?

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Ja, dat kan dus door de waarde aan een form input te geven.
code:
1
2
3
4
5
// uitlezen doe je zo:
var sKleur = document.forms['pino'].elements['kleur'].value;

// toewijzen doe je dus zo:
document.forms['pino'].elements['kleur'].value = "blauw";

Of door de inhoud van een document object te herschrijven, bijvoorbeeld een DIV met id='pino_kleur'.
code:
1
document.all['pino_kleur'].innerHTML = sKleur;


offtopic:
jaja ... document.all ... sancties enzo ... :o 8)7 :X

Today's subliminal thought is:


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:19

crisp

Devver

Pixelated

waarbij ook eventjes gezegd moet worden dat innerHTML door Opera (nog steeds niet) ondersteund wordt; gelukkig hoef ik dat Annie niet meer te vertellen :+

Intentionally left blank


Verwijderd

Topicstarter
Annie schreef op 12 oktober 2002 @ 00:27:
Of door de inhoud van een document object te herschrijven, bijvoorbeeld een DIV met id='pino_kleur'.
code:
1
document.all['pino_kleur'].innerHTML = sKleur;
Whoepieieieieie!!! Bedankt! :) Ik heb lekker zitten klooien en het resultaat mag er zijn vind ik zelf. Alle functies die ik voor ogen had werken nu! Bedankt iedereen!

Ik moet nog 2 dingen gedaan krijgen:

[1] Als de gebruiker op "volgende" klikt in het bestelformulier wordt de functie newWin() aangeroepen in de <head></head> en deze opent mbv window.open('bevestigen.html'), een nieuw browser raam, waarin de resultaten van de bestelling geladen worden. Ik heb dit gedaan omdat het mij niet lukte de resultatenpagina in hetzelfde browser raam te laden. Volgens mij moet het met document.location of location.href, maar ik krijg alleen maar errors. Iemand een tip? Google staat overvol met manieren om juist een nieuw raam te openen.

[2] Op de pagina na het bestelformulier (bevestigen.html), kan de gebruiker zijn gegevens invullen. Is er een manier om OF de hele pagina OF onderdelen van de pagina met een "mailto:" naar een emailadres te sturen? Kan ik bijvoorbeeld een tabel een naam geven en deze in een mailtje proppen? Duwtje in de goede richting is ook goed. Ik verwacht hier geen totaaloplossing. Ik weet niet zo goed waar ik naar moet zoeken namelijk.

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

  1. Naar een andere pagina navigeren doe je met
    window.location.href = 'bevestigen.html';
  2. Als je het volledig client-side wil afhandelen kan je een mailto:email@adres.nl als action van een form gebruiken en deze submitten. Het mailtje wordt dan verstuurd met de e-mailclient van de gebruiker. Deze methode heeft natuurlijk wel z'n kleine nadeeltjes, maar daar loop je vanzelf tegenaan.

Today's subliminal thought is:


  • crisp
  • Registratie: Februari 2000
  • Laatst online: 09:19

crisp

Devver

Pixelated

Add 1 zou je bijvoorbeeld ook het invulscherm en het bevestigingsscherm in 2 layers kunnen stoppen waarvan je er elke keer 1 laat zien; als je je window overschrijft mbv window.location kan je natuurlijk niet meer de ingevulde waarden achterhalen...
Add 2 kan je ook eens kijken of je provider een mailscript biedt, of kan je gebruik maken van een gratis mail service

Intentionally left blank


Verwijderd

Topicstarter
Annie schreef op 12 oktober 2002 @ 12:49:
  1. Naar een andere pagina navigeren doe je met
    window.location.href = 'bevestigen.html';
  2. Als je het volledig client-side wil afhandelen kan je een mailto:email@adres.nl als action van een form gebruiken en deze submitten. Het mailtje wordt dan verstuurd met de e-mailclient van de gebruiker. Deze methode heeft natuurlijk wel z'n kleine nadeeltjes, maar daar loop je vanzelf tegenaan.
Als ik
code:
1
var confirmWin = window.location.href('bevestigen.html')

gebruik, wordt idd bevestigen.html in hetzelfde raam geladen, alleen worden de waarden uit het formulier niet meegenomen. De tabel op bevestigen.html blijft dus leeg.
crisp schreef op 12 oktober 2002 @ 13:43:
Add 2 kan je ook eens kijken of je provider een mailscript biedt, of kan je gebruik maken van een gratis mail service
Ik ga idd CGI gebruiken. Staat iets professioneler en mensen zonder emailprogramma (bestaan die nog?) zijn dan ook tevreden. Nu even Googlen naar een "email entire page" scriptje. Lijkt me de beste oplossing.

offtopic:
Ik heb al redelijk wat Java geprogrammeerd en ik moet zeggen dat dat een enorme steun in de rug is bij Javscript. Ik ben alleen gewend dat je van elke variabele weet of het string, float, double, int, etc. is. Dat vind ik wel gek van Javascript.


Dank!

  • Annie
  • Registratie: Juni 1999
  • Laatst online: 25-11-2021

Annie

amateur megalomaan

Uhm, je haalt een paar dingen door elkaar.
Het is: var confirmWin = window.open('bevestigen.html');
of: window.location.href = 'bevestigen.html';

Als je de waarden uit het form overigens op de bevestigen pagina wil krijgen dan kan je deze meesturen in de querystring en in de bevestigen pagina weer terughalen. Zoek maar eens op location.search op i-net of op GoT en je komt ongetwijfeld het eea tegen wat je zo kan overnemen.
Andere optie is werken met een frameset en de vars in een ander frame tijdelijk stallen.

Today's subliminal thought is:

Pagina: 1