Ajax problèmes

Résolu/Fermé
Autumn`Tears Messages postés 1054 Date d'inscription samedi 14 mars 2009 Statut Membre Dernière intervention 23 octobre 2013 - 28 janv. 2010 à 12:58
Archeus01 Messages postés 1567 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 - 29 janv. 2010 à 10:08
Bonjour,

J'ai une ligne déjà créée contenant un descriptif, une liste avec des quantités, un prix unitaire, une remise, et le prix total de cette ligne.
Lorsque je change une valeur sur la quantité le prix ou la remise, il doit automatiquement recalculer le prix final.
Le problème ne vient pas de mes calculs mais plutôt du champ du prix final qui n'est plus reconnu.
Je vous poste la source :

Fonction Javascript (simplifiée) :

function calc(idPage,champs) {
/*calcul*/
/* définition du nom de mon champ */
var total='total'+parseInt(idPage);
/* Modification du champ avec le même identifiant que mon input */
document.getElementById(total).innerHTML=ajaxRequest('total­.php?idPage='+idPage+'&value='+value);

Après, si je fais un alert(document.form[total]) il va me sortir "undefined" alors que mon input a toujours le même nom, bref, la source de ma ligne :

<form name='form' method='post' action=''>
<tr><td><div id='desc1'><textarea name='descriptif1' rows='1' cols='10'><?php echo $val;?></textarea></div></td>
<td><div id='qte1'><select name='quantite1' onChange='calc(1,2)'>
<option value='0'>0</option>
...</select></div>
</td>
<td><div id='prix1'><input type='text' name='prix1' value='<?php echo $prix;?>' size='8' onKeyup='calc(1,2)'></div></td>
<td><div id='remise1'><input type='text' name='remise1' value='<?php echo $remise;?>' size='8' onKeyup='calc(1,2)'></div></td>
<td><div id='total1'><input type='text' name='total1' value='<?php echo $total;?>' size='8' readonly></div></td></tr>

Page qui modifie ma valeur (total.php) :

<?php
header('Content-type: text/html; charset=latin1');
?>
<input type='text' name='total<?php echo $_GET['idPage'];?>' value='<?php echo $_GET['value'];?>' size='8' readonly>


Si vous avez une idée d'où pourrait venir le problème, je vous en remercie !
Si vous avez besoin que je sois plus explicite, je tenterai tant bien que mal de l'être plus !

3 réponses

Archeus01 Messages postés 1567 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 447
28 janv. 2010 à 15:55
QUe vaut value dans ton javascript document.getElementById(total).innerHTML=ajaxRequest('total­­.php?idPage='+idPage+'&value='+value); ? Il devrait valoir un truc du genre <input type='text' name='totalX' value='XXX_CALCULE' size='8' readonly />
Ensuite, pourquoi changer le inerhtml des div et pa la value des input? Sa serait plus simple quand même! (et en plus, je pense que c'est ce que tu veux faire)
0
Alain_42 Messages postés 5361 Date d'inscription dimanche 3 février 2008 Statut Membre Dernière intervention 13 février 2017 894
28 janv. 2010 à 16:55
document.getElementById(total).innerHTML=ajaxRequest('total­­.php?idPage='+idPage+'&value='+value);

et le div ton input:
<div id='total1'><input type='text' name='total1' value='<?php echo $total;?>' size='8' readonly></div>

tu vois bien que l'id n'est pas bon
il faut:

document.getElementById('total1')....
et entre guillemets simples ou doubles

si je fais un alert(document.form[total]) =>
alert(document.form.total.value)


de plus je ne vois pas trop ton principe, tu fais par ajax appel à un script php qui te renvoie la valeur que tu lui passes en argument value='<?php echo $_GET['value'];?>'

apparemment tu fais un calcul par javascript, alors il suffit que dans ta fonction calc(1,2) tu rajoutes

document.getElementById('total1').value=ton_total_calcule
0
Archeus01 Messages postés 1567 Date d'inscription mercredi 3 octobre 2007 Statut Membre Dernière intervention 9 juin 2022 447
29 janv. 2010 à 10:08
le total est bien une variable dans son exemple. Il ne faut donc pas de guillemets! Il donne l'explication de sa variable total deux lignes plus haut de sa première utilisation.
Par contre je suis d'accord sur le document.getElementById(total).value=ton_total_calcule ...
0