11548 sujets

JavaScript, DOM et API Web HTML5

Bonjour
j'ai un souci sur un petit bout de code en javascript. J'utilise jQuery...
je teste 2 valeurs (longueur et largeur) par rapport a des longueur et largeur max.
Si les longueurs dépassent les max, j'affiche un message d'erreur sinon je calcule le prix et je l'affiche.

voila le code :

...

if (longueur > longueurMax || largeur > largeurMax) {
					
					$('#messageErreur').css('display', 'block');
					$('#messageErreur').text("La longueur et/ou la largeur depassent les valeurs maximales");
					$('#messageErreur').fadeOut(3000);
					$('#resultat').attr("value","0");
				
				
				}else{
					var prix = $('#prixdec').val();
					var quantite = $('#quantite').val();
					var resultat = (longueur*largeur*quantite*prix)/10000;
					resultat = Math.round(resultat*100)/100;
					$('#resultat').attr("value",resultat);
					
				};


ca marche sauf que si je rentre par exemple une largeur 99 avec une largeurMax de 300. ca ne marche pas. Par contre une largeur de 100 et une largeurMax de 300, ca fonctionne.
je précise que j'ai les valeurs avec des console.log et que j'ai bien les valeurs que je rentre. J'ai également essayer de me focaliser sur ce code en supprimant tout le reste autour et j'ai toujours un problème.
si dans mon if je ne test que ma longueur ou que ma largeur ca fonctionne...
si vous avez une idée je serai très reconnaissant
Modifié par pioum (31 Jan 2009 - 17:22)
Ce morceau de code est trop isolé. Il nous faut le contexte parce que là j'aurais envie de répondre : "Mais si, ça marche."
Comment obtiens tu les valeurs que tu compares, par exemple.
Bonjour et bienvenue parmi nous pioum Smiley smile

En tant que modérateur, je me dois de te faire remarquer que tu n'as malheureusement pas respecté l'une des Règles de base du forum qui est d'afficher les codes et exemples proprement à l'aide des boutons [ code]... ici ton code HTML, CSS, PHP, etc.[ /code] (sans espace).

Je te remercie par avance de bien vouloir éditer ton message afin de le rendre conforme à cette règle. Smiley cligne

D'ailleurs, je rappelle que le lien qui apparaît en bandeau tout en haut du forum ("Nouveau sur le forum ?...") est important. Il contient des pistes de recherche, des indications sur les règles de vie de la communauté, etc.
Il serait courtois de ta part de bien vouloir en prendre connaissance.

Bonne continuation Smiley smile

upload/1-code.gif
Pardon je pensais bien qu'il y avait des tags pour le code mais je suis allé un peu trop vite.
voila le bloc complet de ma fonction déclenché par un bouton click. je l'ai un peu modifié par rapport a tout a l'heure mais j'obtiens toujours la même chose. par contre contrairement a ce que j'ai dis tout a l'heure, si je teste la longueur ou la largeur seule ca ne marche. Ni avec ce code ni avec l'ancien.
Les valeurs sont obtenus en allant chercher les values de div avec un id spécifique. les values dans les div sont bons.
si je rentre les valeurs max "a la main" dans le code ca marche. mais si je fais une console de mes valeurs max obtenues, j'obtiens les bonnes valeurs...



$('#btnCalc').click(function(){
	var longueur = $('#longueur').val();
	var longueurMax = $('#longueurMaxtrue').val();

	var largeur = $('#largeur').val();
	var largeurMax = $('#largeurMaxtrue').val();
			
			
	if (!isNaN(largeur) && !isNaN(longueur)){
		$('#messageErreur').css('display','none');
		$('#messageErreur').text("");
				
		if ((longueur <= maxLongueur) && (largeur <= maxLargeur)) {
			var prix = $('#prixdec').val();
			var quantite = $('#quantite').val();
			var resultat = (longueur*largeur*quantite*prix)/10000;
			resultat = Math.round(resultat*100)/100;
			$('#resultat').attr("value",resultat);
				
					
		}else{

			$('#messageErreur').css('display', 'block');
			$('#messageErreur').text("La longueur et/ou la largeur depassent les valeurs maximales");
			$('#messageErreur').fadeOut(5000);
			$('#resultat').attr("value","0");
		};
			
				
	}else{
		$('#messageErreur').css('display', 'block');
		$('#messageErreur').text("La longueur et/ou la largeur doivent etre des nombres");
		$('#messageErreur').fadeOut(5000);
		$('#resultat').attr("value","0");
	}
});
Oui effectivement ca marche.
J'ai du modifier légérement mon script pour que le parseFloat agisse après le test NaN. Parceque si j'ai bien compris parseFloat("24trois") donne 24.
Par contre pourquoi un parseFloat est nécessaire, c'est pour moi un mystère...

merci en tout cas pour votre rapidité
bon dimanche
Si tu ne transformes pas la chaine de caractère en nombre à virgule flottante (ou bien en entier avec parseInt, selon ce que tu veux), la comparaison est faite grâce à l'ordre alphabétique, par exemple :
"99" > "100"
parce que 9 est après 1 dans la table ASCII (http://www.asciitable.com/), tout comme
"jj" > "baa"