style span change attribute javascript html textbox numbers space

javascript - span - ¿Agregando espacio entre números?



title css (2)

Estoy tratando de hacer una entrada de número. He hecho que mi cuadro de texto solo acepte números a través de este código:

function isNumber(evt) { evt = (evt) ? evt : window.event; var charCode = (evt.which) ? evt.which : evt.keyCode; if (charCode > 31 && (charCode < 48 || charCode > 57)) { return false; } return true; }

Pero ahora la pregunta es, ¿cómo crearía espacios mientras el usuario escribe su número, como el espacio del teléfono, pero con números? Por ejemplo, si escriben: 1000 se convertirá en 1 000;

1 10 100 1 000 10 000 100 000 1 000 000 10 000 000 100 000 000 1 000 000 000

Etc ...

He intentado leer la entrada de la derecha para cada 3 caracteres y agregar un espacio. Pero mi manera es ineficiente y cuando cambio el valor de 1000 a 1 000 en el cuadro de texto, lo selecciona por alguna razón, haciendo que cualquier tecla presione después, borre todo.

Si sabe cómo hacerlo, no utilice complementos de javascript como jQuery. Gracias.


La manera más fácil:

1

var num = 1234567890, result = num.toLocaleString() ;// result will equal to "1 234 567 890"

2

var num = 1234567.890, result = num.toLocaleString() + num.toString().slice(num.toString().indexOf(''.'')) // will equal to 1 234 567.890

3

var num = 1234567.890123, result = Number(num.toFixed(0)).toLocaleString() + ''.'' + Number(num.toString().slice(num.toString().indexOf(''.'')+1)).toLocaleString() //will equal to 1 234 567.890 123

4

Si quieres '','' en lugar de '''':

var num = 1234567.890123, result = Number(num.toFixed(0)).toLocaleString().split(//s/).join('','') + ''.'' + Number(num.toString().slice(num.toString().indexOf(''.'')+1)).toLocaleString() //will equal to 1,234,567.890 123

Si no funciona, configure el parámetro como: "toLocaleString (''ru-RU'')" parámetro "en-EN", dividirá el número por '','' en lugar de ''''


Para enteros usar

function numberWithSpaces(x) { return x.toString().replace(//B(?=(/d{3})+(?!/d))/g, " "); }

Para números de punto flotante puede usar

function numberWithSpaces(x) { var parts = x.toString().split("."); parts[0] = parts[0].replace(//B(?=(/d{3})+(?!/d))/g, " "); return parts.join("."); }

Este es un simple trabajo de expresiones regulares. https://developer.mozilla.org/en-US/docs/JavaScript/Guide/Regular_Expressions << Encuentre más información sobre Regex aquí.

Si no está seguro de si el número sería entero o flotante, simplemente use el segundo ...