Auto aggiunge virgola (,) nella casella di text con i numbers

La mia codifica corrente aggiunge virgola (,) quando ci sono 4 o più cifre. Ma invece di 1101 = 1,101 il mio codice sta facendo questo 1101 = 110,1 … voglio che formi e porti la virgola al fronte. Il mio 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> 

Come faccio a formattare così la virgola è nella parte anteriore 1.101 o 10.101 o 100.101.

Prova questo codice

 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);" /> 

Spero che questo ti aiuti.

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

adesso support solo 3 ultime cifre

FIDDLE <— qui

Esiste un certo numero di funzioni là fuori per fare questo, qui è quello che inserisce un separatore di migliaia e fa a Fixed anche utilizzando qualsiasi carattere specificato:

 // 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 

Supponendo di avere una rappresentazione in string di un numero:

 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; } 

Se si tratta di un numero, non di una string, è ansible utilizzare toString () per modificarlo in una prima string.

È ansible utilizzare jquery.numberbox.js per questo tipo di attività.

puoi anche usare questo.

 <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> 

Ecco una modifica alla risposta di @ Engineeration semplicemente lanciando Num a string e facendo una sostituzione globale (una volta) di tutte le virgole esistenti:

 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; } 

accept solo numbersco e un dot

ecco il 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