script incompréhensible !!

script incompréhensible !! - HTML/CSS - Programmation

Marsh Posté le 27-07-2006 à 16:10:00    

Bonjour à tous !
 
Sur une page j'ai fait un formulaire avec des champs qui existe ou non ... Là n'est pas le soucis ! Ma fonction ajvascript doit vérifier si les valeurs entre deux (qui existe) sont > ou <= ....
 
Voici le code :

Citation :

function Formcheck(){
   
  var ok = 1;
   
  var i = 1;
  while( (i < 24) && (ok == 1) ){
   
   if( document.getElementById(i) ){//Si l'input est présent
     
    var j = document.getElementById(i).value;
    var k = document.getElementById("q"+i).value;
    //alert(j+" - "+k+" - "+ok);
     
    if( j > k ){ //Il ne rentre jamais ici  !!!!!!!!!!!!!!!!!!
     alert("toto" );
     ok = 0;
    }
   }
   i = i + 1;
  }
  //alert("ok "+ok);
  if(ok == 0){
   msg = "Vous n'avez pas assez de vaisseaux disponibles !";
   alert(msg);
   
   return false;
  }
  else{
   return true;
  }
 }


 
Ainsi il ne rentre jamais dans le test malgré le fait que quand j'affiche j et k , j est parfois supérieur à k ! Mais ok reste à 1 !!
 
Je ne comprend pas du tout le bug ?

Reply

Marsh Posté le 27-07-2006 à 16:10:00   

Reply

Marsh Posté le 27-07-2006 à 16:43:29    

Dans l'autre sens ( j <= k avec changement des valeurs de ok) ca marche pas non plus ! La il rentre dans le test à chaque fois ! Même quand il ne devrais pas .... :(
 
Avez-vous une idée ???
 
Edit : quand je fais ceci :

Citation :


var j = 10;//document.getElementById(i).value;
var k = 4;//document.getElementById("q"+i).value;


 
Ca marche !!! C'est donc que lorsque qu'il prend les valeurs des input il ne prend pas cela pour des int ?? Si c'est ca comment forcer le type ?


Message édité par malouin35 le 27-07-2006 à 16:45:56
Reply

Marsh Posté le 27-07-2006 à 16:52:21    

oups pardon avec une recherche j'ai trouvé la réponse à ma question et j'ai adapté le script ...
 

Citation :


  var ok = 1;
   
  var i = 1;
  while( (i < 24) && (ok == 1) ){
   
   if( document.getElementById(i) ){//Si l'input est présent
     
    var j = parseInt(document.getElementById(i).value);
    var k = parseInt(document.getElementById("q"+i).value);
     
    if( j > k ){
     ok = 0;
    }
   }
   i = i + 1;
  }

Reply

Marsh Posté le 27-07-2006 à 17:02:26    

vu que parseInt prend en second paramètre un "radix", je te conseille vivement de le mettre.
 
parseInt(val, 10);
 
sinon... tu vas rigoler le jour où tu auras "10" ou "11"... le parseInt() va te rammener 8 et 9... (il bosse par défaut en base 8 cet abruti !)
 
j'ai galéré des mois sur un site de VPC avec ça...
 
le client commandait 10 unités du produit, et s'il ne faisait pas gaffe, dans son panier on n'en mettait que 8 :D

Reply

Sujets relatifs:

Leave a Replay

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