Decimal à 2 chiffres

Soyez le premier à donner votre avis sur cette source.

Snippet vu 12 368 fois - Téléchargée 30 fois

Contenu du snippet

Ce code recupere une valuer dans une zone de texte verifie l'integrité de la saisie et la convertit si possible ennombre decimal à 2 chiffres,efface le contenu en prevenant l'utilisateur sinon.

Source / Exemple :


function TestNombre(id) 
  { //Fonction prenant nu nombre dans une zone de texte : test si c'est un chiffre si oui le convertit en decimal(10e-2) sinon tante de le convertir en decimal
	// efface le contenu de la zone de saisie si convertion impossible
	// arrondit a 2 chiffres si il s'agit deja d'un decimal
        var d=document.getElementById(id); 
         if (d.value!='') 
		  { 

 					if (isNaN(d.value)==true)//si on tombe sur une virgule la valeur n'est pas considérée comme un nombre
					{
					Num=d.value.indexOf(','); 
					//on remplace la virgule par un point 
 					Resultat=d.value.substring(0,Num)+'.'+d.value.substring(Num+1,d.value.length);d.value=Resultat;d.value=Math.round(d.value*100)/100;
                          if (isNaN(d.value)==true)
 							{ 
							d.value='';
 							alert('VOUS DEVEZ SAISIR UN NOMBRE DECIMAL OU ENTIER'); 
 							return false; 
  							} 
 					} 

 				Temp=Math.round(d.value*100)/100;// on arrodi a 2 chiffres si decimal a plsu de 2 chiffres
				d.value=Temp;

					//on replace le nombre de zero necessaire derrier le chiffre
  					if ((d.value.length-Math.abs(d.value.indexOf('.')))==2)//cas ou un chiffre derriere la point.rem: la value absolue sert a ne pas tomber dasn le cas ou indexOf=-1
  					{ 
  					d.value =Temp+'0';
 					}
					else if (d.value.indexOf('.')==-1)// cas ou entier 
 					{
 					d.value=d.value+'.00'; 
  					} 
 					else if ((d.value.length-d.value.indexOf('.'))==1) //cas ou point mais pas de chiffres derriere 
 					{ 
 					d.value=Temp+'.00';
  					}
  				return true;
 			}
  	}

A voir également

Ajouter un commentaire Commentaires
bannik Messages postés 3 Date d'inscription lundi 6 mai 2002 Statut Membre Dernière intervention 20 juillet 2007
20 juil. 2007 à 14:15
Sinon, pour l'arondi apres la virgule, la fonction toFixed(x) le fait tres bien.
x représente le nombre de chiffres aprés la virgule
tsatsis Messages postés 2 Date d'inscription dimanche 29 août 2004 Statut Membre Dernière intervention 4 septembre 2006
4 sept. 2006 à 00:58
Merci beaucoup ou avais-je la tête, Cela fonctionne !
crilun Messages postés 114 Date d'inscription lundi 10 mai 2004 Statut Membre Dernière intervention 17 octobre 2006
3 sept. 2006 à 22:34
en effet ce n'est pas la valeur qu'il faut passer en parametre mais l'id de ton control :
tsatsis Messages postés 2 Date d'inscription dimanche 29 août 2004 Statut Membre Dernière intervention 4 septembre 2006
3 sept. 2006 à 18:12
superbe ce formulaire sauf qu'il ne fonctionne chez moi !

Je l'utilise principalement dans une très grande matrice ou l'utilisateur doit rentrer des montatns (en fait une note des frais en ligne) donc je l'utilise en combinaison de la fonction onBlur dans ma

Peux-etre que je declare mal mes parametres ? pourriez vous je vous prie jeter un coup d'oeil, merci !

Bon alors le code telquel je me mets dans le head, entouré des balises script. Cela donne donc
<html>
<head>
<script language="JavaScript">
LE CODE
</script>
</head>

.. je ne le declare pas dans body !



puis à l'interieur de mon formulaire, le champ texte ressemble a ceci



Et ... cela ne fait RIEN quand je quitte le champ !!! Donc si j'introduit un chiffre à trois decimales ... ben il reste a trois decimales !

Auriez vous quelques pistes de rélfection, merci.


TSATSIS Christos
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
12 avril 2005 à 20:41
pour ta vérification, il te faut utiliser une expression régulière... faire ça en négligeant les diférents types de variables, c'est pas super...

ton return n'est pas en fin de fonction, ça passe en C, mais pas en javascript...

et sinon, un exemple aurait été le bien vennu, même si pour une fonction aussi simple, on n'en a pas besoin...

et pour une fonction aussi simple, il serait bien de ne pas utiliser de variables globales...

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.