Ajouter automatiquement une virgule (,) dans une zone de texte avec des nombres

Mon codage actuel ajoute des virgules (,) lorsqu'il y a 4 ou plus de chiffres. Mais au lieu de 1101 = 1,101, mon code le fait 1101 = 110,1 … Je veux qu'il forme et amène la virgule à l'avant. Mon javascript

<script language="javascript" type="text/javascript"> function AddComma(txt) { if (txt.value.length % 4 == 3) { txt.value += ","; } } </script> <asp:TextBox ID="TextBox3" onkeypress="AddComma(this)" runat="server"></asp:TextBox> 

Comment puis-je formater pour que la virgule soit à l'avant 1 101 ou 10,101 ou 100,101.

Essayez ce code

 function Comma(Num) { //function to add commas to textboxes Num += ''; Num = Num.replace(',', ''); Num = Num.replace(',', ''); Num = Num.replace(',', ''); Num = Num.replace(',', ''); Num = Num.replace(',', ''); Num = Num.replace(',', ''); x = Num.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; } <asp:TextBox ID="TextBox3" runat="server" onkeyup = "javascript:this.value=Comma(this.value);" /> 

J'espère que cela vous aide.

 function addComma(txt) { txt.value = txt.value.replace(",", "").replace(/(\d+)(\d{3})/, "$1,$2"); } 

En ce moment, il prend en charge uniquement 3 derniers chiffres

FIDDLE <— here

Il existe un certain nombre de fonctions là-bas pour ce faire, voici un qui insère un séparateur de milliers et fait à Fixed aussi bien utiliser les caractères que vous spécifiez:

 // Format a number n using: // p decimal places (two by default) // ts as the thousands separator (comma by default) and // dp as the decimal point (period by default). // // If p < 0 or p > 20 results are implementation dependent. function formatNumber(n, p, ts, dp) { var t = []; // Get arguments, set defaults if (typeof p == 'undefined') p = 2; if (typeof ts == 'undefined') ts = ','; if (typeof dp == 'undefined') dp = '.'; // Get number and decimal part of n n = Number(n).toFixed(p).split('.'); // Add thousands separator and decimal point (if requied): for (var iLen = n[0].length, i = iLen? iLen % 3 || 3 : 0, j = 0; i <= iLen; i+=3) { t.push(n[0].substring(j, i)); j = i; } // Insert separators and return result return t.join(ts) + (n[1]? dp + n[1] : ''); } console.log(formatNumber(1101, 0)); // 1,101 

En supposant que vous avez une représentation de chaîne d'un nombre:

 function formatNum(str){ var ind=str.length%3; return str.length > 3 ? (str.slice(0,ind)+','+str.slice(ind).match(/\d{1,3}/g).join(',')) : str; } 

S'il s'agit d'un nombre, pas d'une chaîne, vous pouvez ensuite utiliser theString () pour le modifier en premier.

Vous pouvez utiliser jquery.numberbox.js pour ce type de tâches.

Vous pouvez l'utiliser également.

 <script type="text/javascript"> function addcommas(x){ var thisVal = x.value; thisVal = thisVal.replace(/,/g, ''); var thischar = ""+thisVal; var firstval = thischar.split(".")[0]; var secondval = thischar.split(".")[1]; if(secondval=="" || secondval==undefined){secondval = "";} else{secondval = "."+secondval;} var chkmod = parseInt(firstval.length)%3; var spclcon = parseInt(firstval.length)%3; var chkdiv= parseInt(parseInt(firstval.length)/3); if(firstval.length > 3) { last5 = firstval.substr(0,chkmod); for(i=1;i<=chkdiv;i++){ last5+= ","+firstval.substr(chkmod,3); chkmod = chkmod+3; } if(spclcon==0){last5 = last5.substr(1,last5.length-1)} return x.value = last5+""+secondval; } else{ return x.value = firstval+""+secondval; } } </script> 

Voici une modification de la réponse de @ Engineeration simplement en lançant Num en chaîne et en effectuant un remplacement global (une fois) de toutes les virgules existantes:

 function Comma(Num) { Num = Num.toString().replace(/,/g, ''); x = Num.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; } 

Il n'acceptera que le numérique et un dot

Voici le javascript

 <script > function FormatCurrency(ctrl) { //Check if arrow keys are pressed - we want to allow navigation around textbox using arrow keys if (event.keyCode == 37 || event.keyCode == 38 || event.keyCode == 39 || event.keyCode == 40) { return; } var val = ctrl.value; val = val.replace(/,/g, "") ctrl.value = ""; val += ''; x = val.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'); } ctrl.value = x1 + x2; } function CheckNumeric() { return event.keyCode >= 48 && event.keyCode <= 57 || event.keyCode == 46; } </script> 

HTML

 <input type="text" onkeypress="return CheckNumeric()" onkeyup="FormatCurrency(this)" /> 

DEMO JSFIDDLE