Comunidad de diseño web y desarrollo en internet online

problema al sumar campos de texto

Citar            
MensajeEscrito el 24 Sep 2008 12:49 pm
Hola, se que este tema está mas que hablado, pero no consigo que me funcione

Código :

total.text = Number(campoa.text)+Number(campob.text);


Me da NaN :wtf:

Por Fusel

Claber

339 de clabLevel



Genero:Masculino  

Madrid (España)

safari
Citar            
MensajeEscrito el 24 Sep 2008 02:29 pm
Postea el código completo y recuerda que si "campoa" o "campob" están vacíos o tienen un valor no numérico entonces te devolverá eso que dices.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 25 Sep 2008 08:44 am
Gracias elchininet ayer le estuve dandole vueltas y al final lo he conseguido de otra forma:

Código :

var num1 = new Number(2);
var num2 = new Number(2);
//este es el campo de texto para el resultado
var resultado = new Number();


_root.resultado = (num1+num2);


Lo que aún no consigo es que al modificar las cifras de los campos de texto se actualice el resultado sin tener que pulsar botón..

Por Fusel

Claber

339 de clabLevel



Genero:Masculino  

Madrid (España)

safari
Citar            
MensajeEscrito el 25 Sep 2008 09:53 am
No entiendo muy bien, esto que has hecho lo podías hacer así:

Código ActionScript :

var num1:Number = 2;
var num2:Number = 2;
var resultado:Number = num1 + num2;


Ahora dices que "resultado" es un campo de texto, pero en realidad es una variable, no será que tendrás en vez de un nombre de instancia el campo var con la variable "resultado"?

Mejor postea realmente que quieres lograr a ver si te puedo ayudar.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 25 Sep 2008 11:32 am
Gracias por tu interes :alabado: :alabado:

Lo que intento conseguir es:

num1: campo de texto a rellenar por el usuario
num2: campo de texto a rellenar por el usuario
resultado: suma de los valores de los campos anteriores

Lo que pretendo es que sin botón se sumen los datos (numéricos) que se inserten en num1 y num2.

Por Fusel

Claber

339 de clabLevel



Genero:Masculino  

Madrid (España)

safari
Citar            
MensajeEscrito el 25 Sep 2008 12:24 pm
Suponiendo que en tu escena tengas tres campos de texto con nombre de instancia "num1", "num2" y "rasultado", debe quedarte algo como esto:

Código ActionScript :

//---Restringir los caracteres aceptados (solo números)
num1.restrict = "0-9";
num2.restrict = "0-9";

//---Funciones para cuando sea variado el campo de texto
num1.onChanged = function():Void{
   
   calcula();
   
}

num2.onChanged = function():Void{
   
   calcula();
   
}

//---Función de calcular
function calcula():Void{
   
   var n1:Number = (num1.text != "") ? Number(num1.text) : 0;
   var n2:Number = (num2.text != "") ? Number(num2.text) : 0;
   
   resultado.text = String(n1 + n2);
   
}

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 25 Sep 2008 01:24 pm
El código que posteas tal cual no funciona, me da NAN, pero añadiendo este par de lineas:

Código :

num1.text = Number(2);
num2.text = Number(2);

funciona a medias, me explico:

La priméra vez que modificas un campo funciona y me da la suma, pero si realizo otro cambio ya no hace nada :wtf: :wtf:

Por Fusel

Claber

339 de clabLevel



Genero:Masculino  

Madrid (España)

safari
Citar            
MensajeEscrito el 25 Sep 2008 07:41 pm
En realidad no puedo detectar el error que estás cometiendo, esto que he posteado lo puedes ver realizado aquí debajo, así que te aconsejo que crees un documento nuevo, pegues el código en el primer frame, pongas los tres campos de textos con los nombre de instancia respectivos y vuelvas a probar.



Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 26 Sep 2008 10:20 am
Ya lo tengo, el problema era que las cajas de texto eran multiline, las puse como singleline y funciona al pelo (y)

Mil gracias :alabado: :alabado: :alabado:

Por Fusel

Claber

339 de clabLevel



Genero:Masculino  

Madrid (España)

safari
Citar            
MensajeEscrito el 13 Oct 2008 01:42 pm
Retomo el asunto ya que no consigo que me funcione bien del todo.
Me explico, tengo 2 "columnas" de cajas de texto las cuales dan cada una su total y la suma de las dos se marca en otra caja de texto que a su vez, si se pasa de un tope ha de mostrar un mensaje de error (Demasiados carriles).
El caso es que en vez de ese mensaje me da NaN y no se porque, tengo cuatro "sumas" y en tres de ellas me da el NaN.
?¿?¿?¿?¿?¿?¿?¿¿?¿?¿?¿?¿?¿?

Este es el código que tengo:

Código :

resultadoL.selectable = false;
resultado.selectable = false;

num1.restrict = "1-9";
num2.restrict = "1-9";
num3.restrict = "1-9";
num4.restrict = "1-9";


calcula();
calcular();
calculat();

//////////////////////////////////////////

num1.onChanged = function():Void  {
   if (num1.text == "") {
      num1.text = 1;
   }
   calcula();
   calculat();
};
num2.onChanged = function():Void  {
   if (num2.text == "") {
      num2.text = 1;
   }
   calcula();
   calculat();
};
num3.onChanged = function():Void  {
   if (num3.text == "") {
      num3.text = 1;
   }
   calcula();
   calculat();
};
num4.onChanged = function():Void  {
   if (num4.text == "") {
      num4.text = 1;
   }
   calcula();
   calculat();
};



//////////////////////////////////////////

function calcula():Void {

   var n1:Number = (num1.text != "") ? Number(num1.text) : 0;
   var n2:Number = (num2.text != "") ? Number(num2.text) : 0;
   var n3:Number = (num3.text != "") ? Number(num3.text) : 0;
   var n4:Number = (num4.text != "") ? Number(num4.text) : 0;


   resultado.text = String(n1+n2+n3+n4);
   if (String(n1+n2+n3+n4)>5) {
      resultado.text = "Error";
   }
}

//////////////////////////////////////////

numL1.restrict = "0-9";
numL2.restrict = "0-9";
numL3.restrict = "0-9";
numL4.restrict = "0-9";
numL5.restrict = "0-9";

numL1.text = 2;
numL2.text = 1;
numL3.text = 2;
numL4.text = 1;
numL5.text = 1;


calcula();
calcular();
calculat();


numL1.onChanged = function():Void  {
   calcular();
   calculat();
};
numL2.onChanged = function():Void  {
   calcular();
   calculat();
};
numL3.onChanged = function():Void  {
   calcular();
   calculat();
};
numL4.onChanged = function():Void  {
   calcular();
   calculat();
};


function calcular():Void {

   var nL1:Number = (numL1.text != "") ? Number(numL1.text) : 0;
   var nL2:Number = (numL2.text != "") ? Number(numL2.text) : 0;
   var nL3:Number = (numL3.text != "") ? Number(numL3.text) : 0;
   var nL4:Number = (numL4.text != "") ? Number(numL4.text) : 0;

   resultadoL.text = String(nL1+nL2+nL3+nL4);
   if (String(nL1+nL2+nL3+nL4)<6) {
      resultadoL.text = "Error";
   }
}

///////////////////////////////////////////////////////////


resultado.onChanged = function():Void  {
   calculat();
};
resultadoL.onChanged = function():Void  {
   calculat();
};


function calculat():Void {

   var t1:Number = (resultado.text != "") ? Number(resultado.text) : 0;
   var t2:Number = (resultadoL.text != "") ? Number(resultadoL.text) : 0;



   resultadoT.text = String(t1+t2);
   if (String(t1+t2)>11) {
      resultadoT.text = "DEMASIADOS CARRILES";
   }
   if (resultadoT.text == 11) {
      this.aceptar4._visible = true;
   } else {
      this.aceptar4._visible = false;
   }
}

Por Fusel

Claber

339 de clabLevel



Genero:Masculino  

Madrid (España)

safari
Citar            
MensajeEscrito el 13 Oct 2008 03:33 pm
No entiendo muy bien lo que intentas hacer, si pudieras aportar un gráfico donde lo expliques quizás me lleve la idea.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 13 Oct 2008 04:43 pm
num1 + num2 + num3 + num4 = resultado

numL1 + numL2 + numL3 + numL4 + numL5 = resultadoT


resultado + resultadoT = miResultadoFinal

si miResultadoFinal es mayor que 11 ha de darme el mensaje "DEMASIADOS CARRILES", pero me da NaN

Por Fusel

Claber

339 de clabLevel



Genero:Masculino  

Madrid (España)

safari
Citar            
MensajeEscrito el 13 Oct 2008 05:54 pm
Pues se resuelve prácticamente de la misma manera, no es necesario que hagas una función para cada onChanged, lo mejor es hacer una función común y llamarla cada vez que se varíe un campo de texto, así tienes la seguridad de que siempre va a realizar la operación:

Código ActionScript :

//---Restringir los caracteres aceptados (solo números)
num1.restrict = "0-9";
num2.restrict = "0-9";
numL1.restrict = "0-9";
numL2.restrict = "0-9";

//---Funciones para cuando sea variado el campo de texto
num1.onChanged = function():Void{
   
   calcula();
   
}

num2.onChanged = function():Void{
   
   calcula();
   
}

numL1.onChanged = function():Void{
   
   calcula();
   
}

numL2.onChanged = function():Void{
   
   calcula();
   
}

//---Función de calcular
function calcula():Void{
   
   var n1:Number = (num1.text != "") ? Number(num1.text) : 0;
   var n2:Number = (num2.text != "") ? Number(num2.text) : 0;
   
   var nL1:Number = (numL1.text != "") ? Number(numL1.text) : 0;
   var nL2:Number = (numL2.text != "") ? Number(numL2.text) : 0;
   
   resultado.text = (n1 + n2 != 0) ? String(n1 + n2) : "";
   resultadoT.text = (nL1 + nL2 != 0) ? String(nL1 + nL2) : "";
   
   miResultadoFinal.text = (n1 + n2 + nL1 + nL2 >= 11) ? "DEMASIADOS CARRILES" : String(n1 + n2 + nL1 + nL2);
   
}


Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 22 Nov 2012 09:49 pm
hola buen dia

disculpen la duda

estoy aprendiendo javascript

y no consigo resolver este problema

intento sacar una utilidad y me muestre el resultado pero no consigo nada

saludos

</html>

Código :

<html>
<head>
<script type="text/javascript">

function sumar(c){
var subtotal = 0;

var precj = 0;
var porcint = 0;
var pzxcj = 0;
var unos = 0;

campo = c.form;
  if(!/^\d*$/.test(c.value)) return;

      for (var i = 0; i < campo.length-1; i++) {
        
        if (!/^\d+$/.test(campo[1].value)) continue;
              precj = parseInt(campo[1].value);
            
      if (!/^\d+$/.test(campo[2].value)) continue;
              porcint = parseInt(campo[2].value);
            
      if (!/^\d+$/.test(campo[3].value)) continue;
              pzxcj = parseInt(campo[3].value);
            
   unos = porcint/100;
   unos = precj+unos;
   subtotal = unos/pzxcj;

         // if (!/^\d+$/.test(campo[i].value)) continue;
             // subtotal += parseInt(campo[i].value);
      }
document.getElementById('res').value = subtotal;
}

</script>

</head>
<body>
<form name="a" action="" method="post">
1:<input type="text" name="sum[]" value="0" onkeyup="sumar(this);" />precio cj<br />
2:<input type="text" name="sum[]" value="0" onkeyup="sumar(this);" />porciento<br />
3:<input type="text" name="sum[]" value="0" onkeyup="sumar(this);" />piezas por caja<br />
4:<input type="text" name="sum[]" value="0" onkeyup="sumar(this);" /><br />
5:<input type="text" name="sum[]" value="0" onkeyup="sumar(this);" /><br />
6:<input type="text" name="sum[]" value="0" onkeyup="sumar(this);" /><br />
Resultado:<input type="text" id="res" value="0" />
</form>
</body>

Por learsi

0 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.