value dropdownlist met javascript pakken
Ik toon via een while loop producten die uit het assortiment worden gehaald. Zoals de volgende code:
Quote:
$results = $mysqli->query("SELECT product_code, dikte, product_name, product_desc, product_img_name, price "
. "FROM products WHERE groepsnummer = $groepsnummer ORDER BY id ASC");
if ($results) {
echo "<ul class='products'>";
$productnummer = 0;
while ($obj = $results->fetch_object()) {
$productnummer++;
. "FROM products WHERE groepsnummer = $groepsnummer ORDER BY id ASC");
if ($results) {
echo "<ul class='products'>";
$productnummer = 0;
while ($obj = $results->fetch_object()) {
$productnummer++;
En dan onder die while de opmaak en de resultaten uit de database, zoals de prijs van het product etc.
De variabele $productnummer heb ik aangemaakt en laat ik vermeerderen omdat ik deze toevoeg aan het id van de <input> zodat elk id uniek is. Zoals dit:
Quote:
echo "<input type='hidden' id='productprijs".$productnummer."' name='productprijs' value='{$obj->price}' />";
Dan krijg je uiteindelijk dit:
Van het rechtergedeelte maak ik een preview (nog zonder opmaak nu) die via AJAX direct alles berekent en toont. Dit werkt, voor alles behalve voor de 'dikte steel'. De value van deze dikte bevindt zich namelijk dus binnen de select en ik weet niet hoe ik die bij de 'onkeyup' event moet pakken.
Hieronder het stukje code waarmee ik de overige waarden pak bij de onkeyup:
Quote:
<input type='text' onkeyup=\"loadDoc(this.value, getValue('productprijs".$productnummer."'), getValue('productcode".$productnummer."', getValue('dikte".$productnummer."')))\" size='2' maxlength='2' name='product_qty' id='aantal' value='1' />
In dit stukje code moet ik dan dus, lijkt me, op de juiste wijze de dikte binnen de dropdownlist pakken. Het is me alleen tot nu toe niet gelukt, ook niet na lezen en redelijk wat uitproberen.
Hoe pak ik die value?
Alvast bedankt :)
Edit: misschien als nuttige toevoeging even hoe de code van die dropdownlist eruit ziet
Quote:
echo 'Dikte steel: <select name="dikte" id="dikte'.$productnummer.'" >';
$dikte = explode("@", $obj->dikte);
foreach ($dikte as $key => $value) {
echo '<option value="' . $value . '">' . $value . '</option>';
}
echo '</select> cm. <br/><br/>';
$dikte = explode("@", $obj->dikte);
foreach ($dikte as $key => $value) {
echo '<option value="' . $value . '">' . $value . '</option>';
}
echo '</select> cm. <br/><br/>';
Gewijzigd op 06/03/2016 16:48:34 door L deB
Hiermee haal je de value uit een select list.
Edit:
Ik zie nu dat je een document inlaad met de keyup, en de variables wilt doorgeven.
Staat er hier niet een ) verkeerd?
Code (php)
1
<input type='text' onkeyup=\"loadDoc(this.value, getValue('productprijs".$productnummer."'), getValue('productcode".$productnummer."', getValue('dikte".$productnummer."')))\" size='2' maxlength='2' name='product_qty' id='aantal' value='1' />
Code (php)
1
<input type='text' onkeyup=\"loadDoc(this.value, getValue('productprijs".$productnummer."'), getValue('productcode".$productnummer."'), getValue('dikte".$productnummer."'))\" size='2' maxlength='2' name='product_qty' id='aantal' value='1' />
Gewijzigd op 06/03/2016 18:08:07 door Randy vsf
Bijvoorbeeld als volgt:
Bij elke wijziging is er een reële kans dat dit van invloed is op de eindprijs, zodoende zou er bij elke (willekeurige) wijziging voldoende aanleiding kunnen zijn voor het starten van een routine die de prijs opnieuw berekent, bijvoorbeeld "updatePrice()".
Deze ene routine "scant" alle relevantie informatie in het formulier: de geselecteerde producten, hoeveelheden en andere ter zaken doende eigenschappen. Vervolgens roep je met deze informatie via een AJAX call een script aan die de nieuwe totaalprijs berekent en weergeeft.
Wat je ook nog kunt doen is het volgende: je slaat de bijgewerkte informatie (via AJAX) op in je sessie (je zult sowieso een soort van shoppingcart moeten hebben?). Als dit is geslaagd roep je via AJAX het script aan die de nieuwe prijs berekent en weergeeft, waarbij je gebruik maakt van de informatie in je sessie - je hoeft dan niet alle informatie opnieuw door te geven via AJAX want alle (bijgewerkte) informatie zit al in je sessie.
Randyvsf, die stond inderdaad verkeerd. Ik weet niet of dat het enige was, heb nogal veel uitgeprobeerd verder ook. Het werkt nu wel.
Thomas van den Heuvel: op dit moment stuur ik een AJAX request die ik aanstuur per <input>.
Bijvoorbeeld:
Quote:
echo "<input type='text' onkeyup=\"loadDoc(this.value, getValue('productprijs" . $productnummer . "'), getValue('productcode" . $productnummer . "'), getValue('dikte" . $productnummer . "'), getValue('productnaam" . $productnummer . "'), getValue('productafbeelding" . $productnummer . "'), getValue('productomschrijving" . $productnummer . "'))\" size='2' maxlength='2' name='product_qty' id='aantal' value='1' />";
loadDoc is een simpele AJAXrequest die ik laat gaan naar ajaxquerie.php en dit bestand regelt de opmaak en inhoud en echo'ed die terug. Op dit moment werkt dat gedeelte nu:
Ook die extra kosten kloppen trouwens voor als iemand zich dat afvraagt, 1 cm. is de standaard en heeft geen extra kosten.
Toen dit werkte geprobeerd om hetzelfde voor elkaar te krijgen bij de dropdownlist. Lukte me urenlang niet. Toen 2 keer een \ toegevoegd zoals hieronder:
Quote:
onchange=\"loadDocnieuw(this.value, getValue('aantal'))\">";
Ook onchange in plaats van keyup.
Geen idee waarom die \ perse nodig is maar dat is gewoon mijn gebrek aan kennis, weet nauwelijks iets van javascript. Maar uiteindelijk dus wel gelukt :) bedankt beide
Gewijzigd op 09/03/2016 17:25:44 door L deB