Ver Mensaje Individual
  #1 (permalink)  
Antiguo 22/07/2013, 16:49
chuncho_villero10
 
Fecha de Ingreso: diciembre-2010
Mensajes: 9
Antigüedad: 13 años, 5 meses
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