2014-08-27 1 views
0

Dans le système sur lequel je travaille, il y a beaucoup d'entrées pour le prix, et je voulais créer une classe css pour chacune d'entre elles afin que l'entrée dispose d'un masque pour la devise (like 4.500,00[yes, '.' for thousands and ',' for decimal]).Création d'une classe css pour l'entrée de devise

J'ai levé les yeux et trouvé jsmaskedinput, mais cela ne correspond pas à mes besoins. L'entrée pourrait avoir une quantité de nombres compris entre 0 et 13, et il serait manipulé comme il est tapé, comme:

10 -> 10,00 

1500 -> 1.500,00 

6331500 -> 6.331.500,00 

5446331500 -> 5.446.331.500,00 

Tous les conseils?

Merci beaucoup! :)

+2

Avec CSS, vous ne pouvez pas manipuler votre texte. Vous aurez besoin de PHP ou Javascript pour y arriver, est-ce que ça vous convient? Si oui, vérifiez le deuxième codeblock sur cette réponse: http://stackoverflow.com/a/18147068/1930721 – LinkinTED

+0

Vous avez besoin d'un langage de script pour faire quelque chose comme ça. CSS ne l'est pas. Et vous pouvez trouver une myriade de fragments de code JavaScript prêts à l'emploi pour ce cas d'utilisation sur le Web. – feeela

Répondre

1

Here est votre solution

HTML

<div id="this">-123456789.12345678</div> 

JS

var myText = $("#this").text(); 
myText = addCommas(myText); 
$("#this").text(myText); 
function addCommas(nStr) 
{ 
    nStr += ''; 
    x = nStr.split('.'); 
    x1 = x[0]; 
    x2 = x.length > 1 ? ',' + x[1] : ''; 
    var rgx = /(\d+)(\d{3})/; 
    while (rgx.test(x1)) { 
     x1 = x1.replace(rgx, '$1' + '.' + '$2'); 
    } 
    return x1 + x2; 
} 

réponse adaptée de lien this.

  • Le numéro d'origine est: -123456789.12345678
  • Le numéro de sortie est: -123.456.789,12345678
+0

Merci beaucoup! Travaillé comme un charme. –

-1

HTML

<form method = "POST">  
    <label for = "currency">Currency</label> 
    <input type = "number" pattern = "^\\$?(([1-9](\\d*|\\d{0,2}(,\\d{3})*))|0)(\\.\\d{1,2})?$" id = "currency" required autofocus/> 
    <br /><br /> 
    <input type = "submit" value = "Send" /> 
</form> 

http://jsfiddle.net/2gqodf13/

J'espère que cela vous aidera;)

+0

Il y a beaucoup de problèmes avec la solution que vous avez donnée. Les ancres de début et de fin ne sont pas nécessaires dans l'attribut pattern, le type "number" n'autorise pas "$", vous n'avez pas besoin de double échappement, et vous n'avez pas remarqué qu'il utilise des séparateurs de style européen. Essayez '\ $? (([1-9] (\ d * | \ d {0,2} (. \ D {3}) *)) | 0) (\, \ d {2})?' –

Questions connexes