onChange functie laten uitvoeren

Status
Niet open voor verdere reacties.

Marinaio

Gebruiker
Lid geworden
21 sep 2007
Berichten
5
Beste mensen,

Ik ben bezig met een webshop voor een inzamelingsactie. Nu heb ik dat bij alles werkend behalve bij het aanpassen van het aantal producten in een winkelwagen. Wanneer het aantal producten veranderd wordt moet het script dus uitgevoerd worden en moet direct het nieuwe aantal en de nieuwe totaalprijs zichtbaar worden.

Mijn veld ziet er als volgt uit:

PHP:
<?php
echo "<input type=\"text\" name=\"hoeveelheid_".$i."\" value=\"".$product[1]."\" size=\"2\" maxlength=\"2\" class=\"inputbox\" onChange=\"updateItem(".$i.")\" />\n";
?>

Onderstaande functie gaat om met het opgegeven/veranderde product en het aantal.

Code:
//aantal in winkelwagen veranderen
    function updateItem(item) {
    
    var veld = "hoeveelheid_" + item;
    var aantal = document.formulier_wagen.veld.value;
    
    var url = "ajax/update_cart.php?item=" + item + "q=" + aantal;
    getData(url,'info')

    }


Ik krijg netjes het product item door, alleen ik krijg met geen mogelijkheid q, het aantal door.

In firefox heeft het foutconsole aan:

document.formulier_wagen.veld has no properties

De variabele veld heb ik aangemaakt omdat hij natuurlijk per product moet kijken wat het aantal reeds toegevoegde producten is.

Hoe kan ik er voor zorgen dat veld in de functie op regel 5 als variabele wordt gezien en niet als veld? Ik hoop dat mijn vraag duidelijk genoeg is.
 
Laatst bewerkt:
Een direct antwoord op je vraag heb ik niet, maar misschien kan je onderaan een knop plaatsen en dat als mensen daarop drukken de nieuwe aantallen worden doorgevoerd?
 
Code:
//aantal in winkelwagen veranderen
    function updateItem(item) {
    
    var veld = "hoeveelheid_" + item;
    var aantal = document.formulier_wagen.veld.value;
    
    var url = "ajax/update_cart.php?item=" + item + "q=" + aantal;
    getData(url,'info')

    }
veld is op die manier een string en geen object.

Prober eens:
PHP:
// aantal in winkelwagen veranderen
    function updateItem(item) {
    
    var veld = eval("document.formulier_wagen.hoeveelheid_" + item);
    var aantal = veld.value;
    
    var url = "ajax/update_cart.php?item=" + item + "q=" + aantal;
    getData(url,'info');

    };
:)


Vr.Gr. Egel.
 
Top! Dit werkt inderdaad! Ik heb één ding moeten aanpassen en dat was het & teken voor de q=. Klein detail!

Bedankt! Ik kan weer verder!

Marinaio

P.S.
Waarom gebruik je hier eval? Is hier geen andere oplossing voor? Ik ben blij dat het wekt alleen eval is niet zo netjes geprogrammeerd toch?
 
Laatst bewerkt:
Graag gedaan! :)

eval() is een gewone manier om een string als script uit te voeren maar het kan ook anders:
PHP:
<form name="formulier_wagen">
 <input name="hoeveelheid_1" type="text" value="111">
 <input name="hoeveelheid_2" type="text" value="222">
 <input name="hoeveelheid_3" type="text" value="333">
</form>

<script type="text/javascript">
 alert( eval('document.formulier_wagen.hoeveelheid_' + 1).value );
 alert( document.formulier_wagen.elements['hoeveelheid_' + 2].value );
 alert( document.formulier_wagen['hoeveelheid_' + 3].value );
</script>
De tweede gebruikt de elements array maar je kunt formulier_wagen ook al als array gebruiken zoals de derde. :) Dan wordt het:
PHP:
var veld = "hoeveelheid_" + item;
var aantal = document.formulier_wagen[veld].value;

// of in 1x
var aantal = document.formulier_wagen['hoeveelheid_' + item].value;

Vr.Gr. Egel.
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan