Mise a jour d'un champ d'après une checkbox

Résolu
hellworld Messages postés 8 Date d'inscription jeudi 8 juillet 2010 Statut Membre Dernière intervention 14 février 2011 - 8 oct. 2010 à 10:58
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 - 9 oct. 2010 à 18:53
Bonjour, j'ai sur mon site un calculateur de devis qui met a jour un champ en live selon des checkbox.
Le script fonctionne sous IE mais pas sous Firefox ou safari et je ne comprend pas pourquoi.

Est-ce que quelqu'un peu m'aider svp ? ca doit pas etre bien compliqué pourtant !

La page est question est : http://www.antares-sys.com/devis.php

Le check box est défini de cette facon :
 Création d'un site "basique"     [# + d'info]
blabla



et la fonction maj :

function maj(valeur,option) 
{
var total = new Number;

total = document.getElementById('total').value;
    if (document.getElementById(option).checked == false) 
document.getElementById('total').value = total - valeur;
else 
document.getElementById('total').value = parseInt(total) + valeur;
}



merci beaucoup pour votre aide !
David

3 réponses

PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
8 oct. 2010 à 14:45
Bonjour,
fonctionne sous IE mais pas sous Firefox ou safari
c'est un classique avec les NAMEs sans IDs
dans la ligne
if (document.getElementById(option).checked == false)

tu cherches l'élément qui a pour ID option, mais tes contrôles n'ont qu'un NAME, seul IExplorer en absence d'ID cherche si un NAME correspond, pas les autres qui sont plus stricts...

- Solution #1 mettre une ID à tes contrôles
- Solution #2 passer l'élément en paramètre à ta fonction
//----------------------------
function maj(valeur, element) {
  var total = new Number;
  total = document.getElementById('total').value;
  if (element.checked == false) {
    document.getElementById('total').value = total - valeur;
  } else {
    document.getElementById('total').value = parseInt(total) + valeur;
  }
}

et l'appel à ta fonction devient
on met this à la place du NAME.


;O)
3
hellworld Messages postés 8 Date d'inscription jeudi 8 juillet 2010 Statut Membre Dernière intervention 14 février 2011
8 oct. 2010 à 20:13
Merci beaucoup ca marche nickel avec l'ID.. c'était effectivement tout con !
Bon week-end a tous.
0
PetoleTeam Messages postés 3426 Date d'inscription lundi 26 décembre 2005 Statut Membre Dernière intervention 14 janvier 2011 17
9 oct. 2010 à 18:53
Bonjour,
penses à mettre réponse Acceptée! pour les autres...

;O)
0
Rejoignez-nous