Ga naar inhoud

javascript probleem?


anoniem

Aanbevolen berichten

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.
Link naar reactie
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
Link naar reactie
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 !
Link naar reactie
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();".
Link naar reactie

Om een reactie te plaatsen, moet je eerst inloggen

Gast
Reageer op dit topic

×   Geplakt als verrijkte tekst.   Herstel opmaak

  Er zijn maximaal 75 emoji toegestaan.

×   Je link werd automatisch ingevoegd.   Tonen als normale link

×   Je vorige inhoud werd hersteld.   Leeg de tekstverwerker

×   Je kunt afbeeldingen niet direct plakken. Upload of voeg afbeeldingen vanaf een URL in

×
×
  • Nieuwe aanmaken...