anoniem Geplaatst: 20 oktober 2003 Delen Geplaatst: 20 oktober 2003 Ik zit met het volgende probleem. Ik heb 2 pagina's. Een zogenaamd bestellings formulier, en een specificatie pagina. Deze specificatie pagina word geopend als men op verkoopprijs klikt in het bestellings formulier. In het specificatie scherm staan 22 editboxen, 10 tekst velden, 10 voor de prijzen, en 2 voor het totaal prijs. Nu is mijn vraag. Als er op opslaan word geklikt wil ik dat verkoopprijs (in bestelling formulier) meteen meeveranderd in de nieuwe waarde, zonder eerst een refresh te moeten doen.. Ik ben een tijdje bezig geweest... Maar ik kom er niet uit. Alvast bedankt. Quote Link naar reactie
anoniem Geplaatst: 20 oktober 2003 Auteur Delen Geplaatst: 20 oktober 2003 Je kan dit waarschijnlijk het beste met JavaScript DOM doen, maar dat zal wel enige oefening vereisen. Daarnaast moet je ook wel een redelijk "standards complient" pagina hebben om er normaal mee te kunnen werken. Het idee is dan om de prijzen in een apart "veld" te zetten in de vorm van een div, span, textfield of wat dan ook en deze een id toe te kennen. Met JavaScript DOM is het dan mogelijk om de inhoud van het element met de desbetreffende id op te vragen en indien nodig aan te passen. - Bas Quote Link naar reactie
anoniem Geplaatst: 20 oktober 2003 Auteur Delen Geplaatst: 20 oktober 2003 Ik heb me nooit (bewust) bezig gehouden met dat DOM (misschien gebruik ik het al jaren, maar weet niet dat het door sommigen zo genoemd wordt) Wel heb ik ooit voor iemand zo'n compleet bestelformulier ontworpen. Inclusief vele subcategorieen en totalisatie per subcategorie enz. Compleet in JavaScript. Ik gebruikte daar zichtbare en onzichtbare invoervelden voor. Waarden in een veldje zetten gaat d.m.v. [code:1:cde6ca554e]document.formuliernaam.veldnaam.value = "xxxxx";[/code:1:cde6ca554e] De 'truuk' in het doorgeven van variabelen naar andere schermen zit in hetvolgende: van form2 (de geopende / specWindow) naar form1 gaat dit d.m.v. "opener....". Dit is dus het scherm wat form2 geopend heeft (form1 in dit geval). Vervolgens kun je van alle 'mogelijkheden' van dat scherm gebruik maken. Begint wel als DOM te klinken ;) [code:1:cde6ca554e]opener.document.bestel.totaal.value = "xxxxx";[/code:1:cde6ca554e] andersom kan dit door gebruik te maken van de 'schermnaam' die je het nieuwe window hebt gegeven. [code:1:cde6ca554e]specWindow.document.spec.a1.value = "xxxxx";[/code:1:cde6ca554e] Tot slot nog even heel beknopt de twee schermen, zodat je e.e.a. in praktijk kunt zien: form1.htm [code:1:cde6ca554e]<script language="JavaScript"> function openSpec() { specWindow = window.open('form2.htm','specWin','width=400,height=400,left=200,top=200,status=Yes,scrollbars=Yes'); } function openSpecValue() { openSpec(); specWindow.document.spec.a1.value = 10; specWindow.document.spec.a2.value = 20; specWindow.reCalc(); } </script> <a href="javascript:openSpec()">Open specificatie</a><br> <a href="javascript:openSpecValue()">Open specificatie met waarden</a><br> <form name="bestel"> Totaal: <input type="text" name="totaal"><br> Totaal: E. <span id="totaaltekst">0</id>,= </form>[/code:1:cde6ca554e] form2.htm: [code:1:cde6ca554e]<form name="spec"> A1: <input type="text" name="a1"><br> A2: <input type="text" name="a2"><br> ---------------------------<br> Tot: <input type="text" name="tot" disabled ><br> <input type="button" onClick="reCalc()" value="Optellen"> </form> <script language="JavaScript"> function reCalc() { document.spec.tot.value = parseFloat(document.spec.a1.value) + parseFloat(document.spec.a2.value); opener.document.bestel.totaal.value = document.spec.tot.value; opener.document.getElementById('totaaltekst').innerHTML = document.spec.tot.value; } </script>[/code:1:cde6ca554e] Succes ermee ! Quote Link naar reactie
anoniem Geplaatst: 20 oktober 2003 Auteur Delen Geplaatst: 20 oktober 2003 Hardstikke bedankt!!!! nu werkt het :lol: (en daar heb ik dan zo moeilijk op lopen doen.) :oops: Quote Link naar reactie
anoniem Geplaatst: 20 oktober 2003 Auteur Delen Geplaatst: 20 oktober 2003 Financial, Paar kleine dingen. language is verouderd. Gebruik liever type="text/javascript". Je maakt geen gebruik van het W3C DOM (af en toe wel). document.formname is net zoals document.images verouderd. Beter is zoiets als: document.getElementById('spec') (geef enkele Node terug) of document.getElement[b:faecf69ead]s[/b:faecf69ead]ByTagName('img') (geef een array Nodes terug). Ook innerHTML hoort op een andere manier opgelost te worden. Ook kun je beter niet gebruik maken van het javascript protocool: <a href="javascript:n();", maar beter van het onclick event: <a onclick="n();". Quote Link naar reactie
anoniem Geplaatst: 20 oktober 2003 Auteur Delen Geplaatst: 20 oktober 2003 Bedankt ! denk ik. Ik zal me (als ik me weer eens op JS stort) weer eens verdiepen in deze nieuwe stijl. Nu lijkt me overigens wel dat de genoemde (nieuwe) notaties niet werken op de oude browsers ? Niet dat ik me daar veel van aantrek, maar toch even een kleine gedachte. Quote Link naar reactie
anoniem Geplaatst: 20 oktober 2003 Auteur Delen Geplaatst: 20 oktober 2003 HTML hoef je je geen zorgen over te maken. De functies zullen waarschijnlijk alleen werken in de 5e generatie en hoger (IE5/NS6.2 dus). Opera valt daarbuiten denk ik, want Opera heeft nooit normale ondersteunen voor JavaScript gehad :roll: , maar ze gaan de goede kant op (ze hebben de goede mensen aan boord iig). Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen