Hulp bij bestellijst; veel input fields

  • Onderwerp starter Onderwerp starter Cyroq
  • Startdatum Startdatum
Status
Niet open voor verdere reacties.

Cyroq

Gebruiker
Lid geworden
7 apr 2009
Berichten
180
Hallo,

Ik heb een aantal bestellijsten, en elke lijst bestaat uit een stuk of 30 items. Voor elk item heb ik een input textfield staan waar de klant een kwantiteit moet invoeren. (Ik wilde eerst dropdown menu's gebruiken maar dan zit je vast aan een limiet). Als op 'Bestellen' wordt geklikt:
- moet gecontroleerd worden of alle input wel een cijfer is;
- de prijs van elk item moet vermenigvuldigd worden met de ingevoerde kwantiteit;
- als de totaalprijs minder dan een bepaald bedrag is komt er een alert (maar dat lukt me zelf ook wel).

Ik hoop een stukje code te kunnen maken die voor alle forms geldt, dat scheelt weer complexiteit en kb's. Kan iemand me helpen met een opzet? Ik zit vooral met het feit dat elk item een andere prijs heeft, dit maakt het voor mij lastig om een script te maken dat niet item-afhankelijk is.
 
foreach($_POST as $name => $value) {
print "$name : $value<br>";
}

hierdoor loop je door elke post variable van een form. Je kan je zelf zo moeilijk maken als je wilt.

Je weet dat je elke html in de array variable genaamt $_post de gegevens zet ! $_get is de url waardes
 
Bedankt voor je reactie. Mijn kennis in javascript is nog vrij basis, maar ik begin het te leren ;)
Hoe kan ik deze loop voor 1 form laten werken? Ik heb namelijk meerdere formulieren tegelijk 'open staan'.

Is er ook een mogelijkheid om de prijs van het item in de html te verwerken? Bijv zoiets:
HTML:
<input type="text" name="test" value="0" size="2" maxlength="2" price="9" onchange="doMath();" />
Al weet ik dat dit in ieder geval niet werkt. Op deze manier zou je het kunnen verwerken in de loop en heel simpel de totaalprijs kunnen berekenen zonder dat je elk item apart moet benaderen.
 
@mighty: dat's php, en het ging om Javascript. Neem ik aan.


moet gecontroleerd worden of alle input wel een cijfer is
je kan eerst alle textvelden ophalen door een loop te maken, en dan te kijken of het een text-veld is. Zoiets:[JS]var i, items = document.getElementsByTagName('input');
var len = items.length;

for(i=0; i<len; i++)
{
if(items.type == 'text')
{
controleerVeld(items);
}
}[/JS][JS]function controleerVeld(elem)
{
if(parseFloat(elem.value) == NaN)
{
alert('veld met waarde "' + elem.value + '" is verkeerd!');
}
}[/JS]

Al weet ik dat dit in ieder geval niet werkt. Op deze manier zou je het kunnen verwerken in de loop en heel simpel de totaalprijs kunnen berekenen zonder dat je elk item apart moet benaderen.
Nou... eigenlijk werkt het wel. Het idee is dat je dan alleen even XHTML moet gebruiken en een doctype def. erin moet gooien, maar dan kan je met wat Javascript magie dit doen:[js]// loop waardes, net zoals hierboven, en dan:

if(items.getAttribute('price'))
{
alert('veld heeft een prijs van ' + items.getAttribute('price'));
}
[/js]en je DTD shizzle:
HTML:
<!ATTLIST input price CDATA #IMPLIED>
 
Laatst bewerkt:
Dankje, ik had inderdaad Javascript nodig. De loop om inputs op te halen werkt wel, maar hij pakt alle soorten inputs, ook checkboxes. Ik wil alleen de input tekstvelden (voor de items) controleren, hoe doe ik dat?
 
Dankje, ik had inderdaad Javascript nodig. De loop om inputs op te halen werkt wel, maar hij pakt alle soorten inputs, ook checkboxes. Ik wil alleen de input tekstvelden (voor de items) controleren, hoe doe ik dat?

Daarom moet je testen op type == "text" voordat je een test uitvoert op het input veld.
 
De getAttribute methode werkt erg goed! Nu vroeg ik me af of dit ook werkt bij een jumpMenu. Normaal gesproken vraag je de geselecteerde waarde aan volgens :
Code:
var aantal = document.form.jumpMenu.value;
Zou dit ook kunnen met getAttribute? Ik heb het geprobeerd met document.form.jumpMenu.getAttribute('prijs'), waarbij in elk item van het jumpMenu een attribute 'prijs="..."' staat. Helaas resulteert dat in 'null'.
 
Inmiddels heb ik gevonden hoe ik de getAttribute bij een jumpMenu werkend krijg:
Code:
document.form.jumph1.options[document.form.jumph1.selectedIndex].getAttribute('price');
Waarbij 'jumph1' de id is van het jumpmenu. Nu bestaat mijn formulier uit checkboxes, en checkboxen met jumpmenu. Met de volgende methode wil ik de price-attribute van jumpMenus ook kunnen opvragen binnen diezelfde for-loop.
Code:
var jumpName = "jump"+document.form.items[i].id;  //dat werkt
var dePrijs = dePrijs + document.form.jumpName.options[document.form.jumpName.selectedIndex].getAttribute('price'); //dat werkt niet
'dePrijs' zal uiteindelijk dus een lijst met prijzen van de geselecteerde items zijn.
Omdat een id van een checkbox bijv 'h1' is en het id van bijbehorend jumpmenu 'jumph1' is probeer ik op deze manier alles te automatiseren. Het werkt alleen niet. Als ik echter 'jumpName' verander in een directe id ('jumph1' of 'jumph2') werkt het wel. Gaat er misschien iets mis bij het aanmaken van 'jumpName'?
Alvast bedankt!
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan