JQuery - Ayuda con decimales

 
Vista:
Imágen de perfil de Jemel

Ayuda con decimales

Publicado por Jemel (3 intervenciones) el 21/07/2017 22:50:03
Saludos.
Necesito almacenar un numero en una base de datos pero necesito validar que la caja de texto permita escribir una coma pero que no escriba puntos puesto que estos se escriben automáticamente al teclear números.
La función que estoy usando para dar formato al dato es la siguiente:

1
2
3
4
5
6
7
8
9
10
11
12
function formatMiles(input)
{
	var num = input.value.replace(/\./g,'');
	if(!isNaN(num)){
	num = num.toString().split('').reverse().join('').replace(/(?=\d*\.?)(\d{3})/g,'$1.');
	num = num.split('').reverse().join('').replace(/^[\.]/,'');
	input.value = num;
	}
	else{ alert('Solo se permiten numeros');
	input.value = input.value.replace(/[^\d\.]*/g,'');
	}
}

Pero no puedo escribir comas en la caja de texto donde la aplico. Gracias de antemano por su ayuda
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
Imágen de perfil de kip
Val: 141
Plata
Ha mantenido su posición en JQuery (en relación al último mes)
Gráfica de JQuery

Ayuda con decimales

Publicado por kip (38 intervenciones) el 21/07/2017 23:29:03
Hola, aqui tienes un codigo que te servira:

http://www.lawebdelprogramador.com/codigo/JavaScript/2664-Permitir-la-entrada-unicamente-de-numeros-con-signo-negativo-y-decimales.html

En tu caso deberas modificar una linea para que acepte , en lugar de .

1
if(teclaPulsada==13 || (teclaPulsada==44 && valor.indexOf(",")==-1))

Ahora bien si quieres mantener tu codigo esto puede ser lo que busques:

1
2
3
4
5
6
7
8
9
10
11
12
13
function formatMiles(input) {
    var num = input.value.replace(/[\.\,]/g, '');
    if (!isNaN(num)) {
        num = input.value;
        num = num.toString().split('').reverse().join('').replace(/(?=\d*\.?)(\d{3})/g, '$1.');
        num = num.split('').reverse().join('').replace(/\./g, ',');
        input.value = num;
    } else {
        alert('Solo se permiten numeros');
        input.value = input.value.replace(/[^\d\.]*/g, '');
    }
    return input;
}

De esa forma si escribe , o . este valor del input siempre se convertira en un numero con ,

Pruebalo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 141
Plata
Ha mantenido su posición en JQuery (en relación al último mes)
Gráfica de JQuery

Ayuda con decimales

Publicado por kip (38 intervenciones) el 21/07/2017 23:53:05
He modificado tu función ademas para que solo permita un . o , nada mas, la anterior tenia ese error.

1
2
3
4
5
6
7
8
9
10
11
12
13
function formatMiles(input) {
    var num = input.value;
    var comms_dots = num.match(/\.|\,/g);
    if (!isNaN(num.replace(/[\.\,]/, '')) && (!comms_dots || comms_dots.length < 2)) {
        num = num.toString().split('').reverse().join('').replace(/(?=\d*\.?)(\d{3})/g, '$1');
        num = num.split('').reverse().join('').replace(/\./g, ',');
        input.value = num;
    } else {
        alert('Solo se permiten numeros');
        input.value = input.value.replace(/[^\d]*/g, '');
    }
    return input;
}


Pruebala tambien, a ver si se ajusta.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jemel

Ayuda con decimales

Publicado por Jemel (3 intervenciones) el 24/07/2017 15:48:11
Gracias por las respuestas. Me funcionó el hecho de que puedo "mostrar" la coma en la caja de texto. Pero mi problema radica en que necesito escribir esa coma para asignar decimales. Y en este caso no me funciona.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de kip
Val: 141
Plata
Ha mantenido su posición en JQuery (en relación al último mes)
Gráfica de JQuery

Ayuda con decimales

Publicado por kip (38 intervenciones) el 24/07/2017 15:49:37
No termino de entender el 'asginar decimales con coma', puedes explicarnos mejor ?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
Imágen de perfil de Jemel

Ayuda con decimales

Publicado por Jemel (3 intervenciones) el 24/07/2017 17:09:00
Lo que pasa es que el formato de numero que estoy usando es por ejemplo: 3.500,25 Donde 25 son mis decimales. Estos decimales, son opcionales por lo que debo permitir al usuario que los pueda escribir si lo desea. Pero la validación que estoy haciendo no me permite escribir esa coma.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar