Foros del Web » Programando para Internet » Javascript »

[SOLUCIONADO] Problema con separador de miles

Estas en el tema de Problema con separador de miles en el foro de Javascript en Foros del Web. Estimados tengo un problema que debe ser una estupides, mucho no conozco de javascript tengo 2 input, el primero es un numero que se ingresa ...
  #1 (permalink)  
Antiguo 22/07/2013, 16:49
 
Fecha de Ingreso: diciembre-2010
Mensajes: 9
Antigüedad: 14 años
Puntos: 0
Problema con separador de miles

Estimados tengo un problema que debe ser una estupides, mucho no conozco de javascript

tengo 2 input, el primero es un numero que se ingresa manuelmente y debe ser formateado dinamicamente al momento de ingresar un numero, esto funciona perfectamente

El segundo input es el resultado del primer input dividido por 4 y aqui va el problema
ya que al poner la variable sin formatear el numero me hace bien la division y lo muestra dinamicamente, pero el problema va cuando quiero activar la funcion para formatear ya que ni siquiera divide.


Les dejo el codigo para que me puedan ayudar, el codigo esta funcionando pero sin formatear, para que les de el error cambien estas lineas y comenten la primera y saquenle el comentario a la segunda, de antemano muchas gracias, y si eres de chile y de santiago y quiers ganarte unos pesos avisame ya que puede haber unas luquitas

document.getElementById('resultado').value=(sinfor mat);
//document.getElementById('resultado').value=(""+num berFormat(sinformat).value);




Código:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Documento sin título</title>
 <script type='text/javascript' src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
</head>

<body>
<script type="text/javascript">
    function format(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,'');
		}
    }
</script>	
<script>
function obtenerSuma()
            {
				var s = document.getElementById('sueldo').value;

// Replace "the" with "a".
var re = /\./g;
var result = s.replace(re, "");
var sinformat;
var conformat;
sinformat =parseFloat(result)/parseFloat("4");
document.getElementById('resultado').value=(sinformat);
//document.getElementById('resultado').value=(""+numberFormat(sinformat).value);

}


/**
     * Funcion que devuelve un numero separando los separadores de miles
     * Puede recibir valores negativos y con decimales
     */
    function numberFormat(numero){ 
        // Variable que contendra el resultado final
        var resultado = "";
        
        // Si el numero empieza por el valor "-" (numero negativo)
        if(numero[0]=="-")
        {
            // Cogemos el numero eliminando los posibles puntos que tenga, y sin
            // el signo negativo
            nuevoNumero=numero.replace(/\./g,'').substring(1);
        }else{
            // Cogemos el numero eliminando los posibles puntos que tenga
            nuevoNumero=numero.replace(/\./g,'');
        }
        
        // Si tiene decimales, se los quitamos al numero
        if(numero.indexOf(",")>=0)
            nuevoNumero=nuevoNumero.substring(0,nuevoNumero.indexOf(","));

        // Ponemos un punto cada 3 caracteres
        for (var j, i = nuevoNumero.length - 1, j = 0; i >= 0; i--, j++) 
            resultado = nuevoNumero.charAt(i) + ((j > 0) && (j % 3 == 0)? ".": "") + resultado; 
        
        // Si tiene decimales, se lo añadimos al numero una vez forateado con 
        // los separadores de miles
        if(numero.indexOf(",")>=0)
            resultado+=numero.substring(numero.indexOf(","));

        if(numero[0]=="-")
        {
            // Devolvemos el valor añadiendo al inicio el signo negativo
            return "-"+resultado;
        }else{
            return resultado;
        }
    }

	</script>
    
      <input name="sueldo" type="text" id="sueldo" onKeyUp="obtenerSuma(); format(this);" onchange="format(this)" value="500.000" size="8" maxlength="8">
        <p>
  <input type="hidden" id="divide" onKeyUp="obtenerSuma();" value="4" size="8" maxlength="8"> 

  
  
  <input type="text" name="resultado" id="resultado" value="125.000" size="10" maxlength="10" />
</body>
</html>

Última edición por chuncho_villero10; 22/07/2013 a las 16:58
  #2 (permalink)  
Antiguo 23/07/2013, 04:45
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 9 meses
Puntos: 574
Respuesta: Problema con separador de miles

Código Javascript:
Ver original
  1. conformat=numberFormat(String(sinformat));
  2. document.getElementById('resultado').value=conformat;

numberFormat trabaja con un string y le estabas pasando un float.

Ahora bien te queda un problema por resolver.... Cuando el resultado tiene decimales estos llegan con el punto decimal inglés y como numberFormat elimina los puntos pierden el decimal... asi si entras un sueldo de 1 / 4 muestra 025 en vez de 0,25 ....
__________________
Quim
--------------------------------------------------
Ayudar a ayudar es una buena práctica!!! Y da buenos resultados.
  #3 (permalink)  
Antiguo 23/07/2013, 07:52
 
Fecha de Ingreso: diciembre-2010
Mensajes: 9
Antigüedad: 14 años
Puntos: 0
Respuesta: Problema con separador de miles

Cita:
Iniciado por quimfv Ver Mensaje
Código Javascript:
Ver original
  1. conformat=numberFormat(String(sinformat));
  2. document.getElementById('resultado').value=conformat;

numberFormat trabaja con un string y le estabas pasando un float.

Ahora bien te queda un problema por resolver.... Cuando el resultado tiene decimales estos llegan con el punto decimal inglés y como numberFormat elimina los puntos pierden el decimal... asi si entras un sueldo de 1 / 4 muestra 025 en vez de 0,25 ....
Gracias genio, problema resuelto, ahora me enfocare en lo ultimo que me dijiste

Muchas gracias

Etiquetas: ajax, funcion, html, input, jquery, js, miles, separador, variable
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:53.