Estoy intentando imitar la inserción de coma para input type = 'number' en FireFox ya que aún no lo admite. Ingenuamente funciona en Chrome. Tengo mi expresión regular para trabajar ... simplemente no en el orden correcto, necesito revertirlo.

http://jsfiddle.net/hCTDV/2/

Puede ver que formateará el número como 123,4 en lugar de 1,234. Intenté 'reverse ()' pero no puedo hacer que eso funcione, Firefox afirma que no es una función.

Si alguien pudiera ajustar mi expresión regular para que realice correctamente la tarea que deseo, sería genial, de lo contrario, podría funcionar al revés.

1
ngen 7 jul. 2011 a las 23:50

3 respuestas

La mejor respuesta

Prueba este método:

  $('input').keyup(function(){
    var $this = $(this);
    var num = $this.val().replace(/,/g, '');
    $this.val(num.replace(/(\d)(?=(\d{3})+(?!\d))/g, "$1,"));
  });

Parece un poco más simple y parece funcionar: http://jsfiddle.net/hCTDV/3/

1
Abe Miessler 7 jul. 2011 a las 20:06

Puedes usar algo como:

var str = "foo 123456789.22 bar";    
str = str.replace(/\d(?=(?:\d{3})+(?!\d))/g, '$&,');

http://jsfiddle.net/Ar3Qv/

Tenga en cuenta que esto solo funcionará siempre que la parte decimal no tenga más de 3 dígitos; de lo contrario, también agregará , en la parte decimal.

1
Qtax 7 jul. 2011 a las 19:57

Lo que puede hacer puede invertir la cadena y luego aplicarle expresiones regulares y luego invertirla nuevamente, la solución está a continuación:

 $(this).val( $(this).val().replace(".","").split("").reverse().join("").replace(/([0-9]{3}(?=([0-9])))/g, "$1,").split(""),reverse().join("");

Espero que esto ayude

0
Senad Meškin 7 jul. 2011 a las 19:57