Masque de saisie monnaitaire

Masque de saisie monnaitaire - HTML/CSS - Programmation

Marsh Posté le 18-07-2011 à 16:12:21    

Bonjour à tous,
 
J'ai enfin trouvé la solution pour convertir un nombre avec un espace séparateur pour les milliers ainsi que les décimales après la virgule.
Cependant, j'aimerais modifier ce code pour que l'utilisateur puisse utiliser le point comme séparateur de milliers (quand il tape son nombre) et que ce point ne soit pas considéré comme la virgule!
 
Donc je voudrais que quand l'utilisateur tape:
 
1000000 ==> 1.000.000,00
1.000.000 ==> 1.000.000,00 et pas 1,00
 
Pouvez-vous m'aider?
 
Voici mon code:

Code :
  1. <HTML>
  2. <script LANGUAGE="JAVASCRIPT">
  3.     function calculer() {
  4.         var eur = parseFloat(supprEspace(document.getElementById('eur').value.replace(/,/,"." )));
  5.         var chang = parseFloat(supprEspace(document.getElementById('chang').value.replace(/,/,"." )));
  6.         var dol = Math.round((eur*chang)*100)/100;
  7.         document.getElementById('eur').value = format(eur,2," " );
  8.         document.getElementById('chang').value = format(chang,2," " );
  9.         document.getElementById('dol').value = format(dol,2," " );
  10.        
  11.         return false;
  12.         }
  13.     function format(valeur,decimal,separateur) {
  14.         var deci=Math.round( Math.pow(10,decimal)*(Math.abs(valeur)-Math.floor(Math.abs(valeur))));
  15.         var val=Math.floor(Math.abs(valeur));
  16.             if ((decimal==0)||(deci==Math.pow(10,decimal))) {val=Math.floor(Math.abs(valeur)); deci=0;}
  17.             var val_format=val+"";
  18.             var nb=val_format.length;
  19.             for (var i=1;i<4;i++) {
  20.                 if (val>=Math.pow(10,(3*i))) {
  21.                 val_format=val_format.substring(0,nb-(3*i))+" "+val_format.substring(nb-(3*i));
  22.                 }
  23.             }
  24.             if (decimal>0) {
  25.                 var decim="";
  26.                 for (var j=0;j<(decimal-deci.toString().length);j++) {decim+="0";}
  27.                 deci=decim+deci.toString();
  28.                 val_format=val_format+","+deci;
  29.             }
  30.             if (parseFloat(valeur)<0) {val_format="-"+val_format;}
  31.         return val_format;
  32.     }
  33.     function supprEspace(f)    {
  34.         var txtResultat="";
  35.         for (var i=0; i<=f.length-1; i++)    {
  36.             if (f.charAt(i)!=" " )    {
  37.                 txtResultat+=f.charAt(i);
  38.             }
  39.         }
  40.         return txtResultat;
  41.     }
  42. </SCRIPT>
  43. <STYLE type="text/css">
  44.     .champ
  45.     {
  46.         text-align: right;
  47.         width: 145px;
  48.     }
  49. </STYLE>
  50. <BODY>
  51. <FORM name="formulaire" onsubmit="return calculer()">
  52. <INPUT name="EURO" type="text" id="eur" value="0" class="champ" onBlur="return calculer()"> EURO<BR />
  53. <INPUT name="CHANGE" type="text" id="chang" value="0" class="champ"> CHANGE<BR />
  54. <INPUT name="DOLLAR" type="text" id="dol" value="0" class="champ" readonly> DOLLAR<BR />
  55. <INPUT type="submit" value="Convertir">
  56. </FORM>
  57. </BODY>
  58. </HTML>


 
merci d'avance!


Message édité par bingojm le 18-07-2011 à 17:29:44
Reply

Marsh Posté le 18-07-2011 à 16:12:21   

Reply

Sujets relatifs:

Leave a Replay

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