[JS] Problèmes avec listes déroulantes

Problèmes avec listes déroulantes [JS] - HTML/CSS - Programmation

Marsh Posté le 13-09-2010 à 10:45:10    

Bonjour,
 
Je dois réaliser un site de commande de viande pour un ami. Mais n'étant pas développeur web de métier, je patine un peu sur le JS.
Premier problème rencontré : les clients peuvent augmenter le nombre de colis choisi mais pas le baisser. (Par exemple Mme Michu prend 3 colis boeuf 5 Kg, tout compte fait elle n'en veut que 2 ; mon formulaire ne veut pas redescendre à 2, mais si elle voulait en choisir un quatrième il n'y aurait pas eu de problème).
 
Second problème : mes fonctions NbrBoeuf5 et NbrBoeuf10 refusent de travailler "ensemble". Si je commente NbrBoeuf10, ma fonction NbrBoeuf5 fonctionne, si je décommente la 10, aucune des deux ne fonctionnent.
 
 
Pouvez-vous m'aider s'il vous plait ? :(
 
Voici le code JS (sûrement pas des plus propres ...) :

Code :
  1. function affCache(idpr)
  2. {
  3.     var pr = document.getElementById(idpr);
  4.     if (pr.style.display == "" )
  5.         {
  6.         pr.style.display = "none";
  7.     } else {
  8.         pr.style.display = "block";
  9.     }
  10. }
  11. function NbrBoeuf5(form)
  12. {
  13.    var nbrColis = document.getElementById("colisboeuf5kg" ).value;
  14.    if (nbrColis > 1)
  15.    {
  16.       for (cpt=1; cpt < nbrColis; cpt++)
  17.       {
  18.          document.getElementById(cpt+'colisboeuf5kg').innerHTML = '<hr>' +
  19.                                                                   '<ul>' +
  20.                                                                   '<li><select name="americaincarbonnade-' + cpt + '" style="width: 175px;">' +
  21.                                                                   '<option value="americain">0,700 kg américain</option>' +
  22.                                                                   '<option value="carbonnade">0,700 kg carbonnade</option>' +
  23.                                                                   '</select></li>' +
  24.                                                                   '</ul>' +
  25.                                                                   '<p />Avec ...<br />'+
  26.                                                                   '<input type="radio" name="boeuf5-'+cpt+'" id="boeuf51" value="rosbeefIIetsteak" /> 0,800 kg rosbeef II<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,400 kg steak II<br>'+
  27.                                                                   '<input type="radio" name="boeuf5-'+cpt+'" id="boeuf52" value="steakII" /> 1,200 kg steak II<br>'+
  28.                                                                   '<input type="radio" name="boeuf5-'+cpt+'" id="boeuf53" value="steakIetrosbeefI" /> 1,150 kg steak I<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1,000 kg rosbeef I<br>';
  29.          affCache(cpt+'colisboeuf5kg');
  30.       }
  31.    }
  32. }
  33. function NbrBoeuf10(form)
  34. {
  35.    var nbColis = document.getElementById("colisboeuf10kg" ).value;
  36.    if (nbColis > 1)
  37.    {
  38.       for (cpt=1; cpt < nbColis; cpt++)
  39.       {
  40.          document.getElementById(cpt+'colisboeuf10kg').innerHTML = '<hr>' +
  41.                                                                   '<p />Avec ...<br />' +
  42.                                                                   '<input type="radio" name="boeuf10-'+cpt+'" id="boeuf101" value="steakIIetentrecote" /> 1,800 kg steak II<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,500 kg entrecôte<br>' +
  43.                                                                   '<input type="radio" name="boeuf10-'+cpt+'" id="boeuf102" value="steakIIetpetitnerf" /> 1,800 kg steak II<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,500 kg petit nerf<br>' +
  44.                                                                   '<input type="radio" name="boeuf10-'+cpt+'" id="boeuf103" value="rosbeefIIetsteak" /> 1,000 kg rosbeef II<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;1,300 kg steak<br>' +
  45.                                                                   '<input type="radio" name="boeuf10-'+cpt+'" id="boeuf104" value="coteetfiletetsteak" /> 1,000 kg côte &agrave; l'os<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,300 kg filet pur<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;3,000 kg steak I<br />' +
  46.                                                                   '<input type="radio" name="boeuf10-'+cpt+'" id="boeuf105" value="rosbeefIIetcontrefiletetsteak" /> 1,000 kg rosbeef I<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;0,500 kg contrefilet<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;2,800 kg steak I<br />';
  47.          affCache(cpt+'colisboeuf10kg');
  48.       }
  49.    }
  50. }


Ma page commande

Reply

Marsh Posté le 13-09-2010 à 10:45:10   

Reply

Marsh Posté le 13-09-2010 à 19:45:50    

Second problème résolu, ligne 51, l’apostrophe du l'os gênait mes quotes. Solutionné avec l\'os.

Reply

Marsh Posté le 20-09-2010 à 02:30:05    

ben si tu fais par exemple 3, tu vas remplir tes 3 premiers div ==> ok
Si tu passes à 4, ca va remplir les 4 premiers ==> ok
Mais si tu passes à 2 : tu vas remplir les 2 premiers divs, mais tu ne mets pas à vide le 3e, qui reste rempli ==> donc ca ne semble pas diminuer.

 

Tu devrais donc :
 - soit mettre tous les div à vide avant de faire ta boucle de remplissage
 - soit, à la fin, mettre à vide les div ayant un id supérieur au chiffre sélectionné par l'utilisateur.


Message édité par gocho le 20-09-2010 à 02:31:23
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed