Foros del Web » Programando para Internet » Javascript »

problema en evento onchange

Estas en el tema de problema en evento onchange en el foro de Javascript en Foros del Web. Estoy tratando multiplicar dos campos input y colocar el resultado en otro input solo que estos inputs han sido creados en un bucle. todo esta ...

  #1 (permalink)  
Antiguo 28/08/2008, 07:49
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 8 meses
Puntos: 1
problema en evento onchange

Estoy tratando multiplicar dos campos input y colocar el resultado en otro input solo que estos inputs han sido creados en un bucle.

todo esta bien en el bucle, solo que cuando quiero multiplicar la cantidad por el precio al hacer onchange no consigo el resultado.

Comence por tratar de conseguir por lo menos el valor precio en el campo subtotal y la respuesta que consigo es [object],

Si me pueden orientar?



document.write("<input type='text' id='precio" + num + "'>");

document.write("<input type='text' id='cantidad"+num+"' onchange=\"document.getElementById('subtotal" + num + "').value =

document.getElementById('precio" + num + "')\"> ");

document.write("<input type='text' id='subtotal" + num + "'><br>");
  #2 (permalink)  
Antiguo 28/08/2008, 07:55
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: problema en evento onchange

Debes poner .value al hacer referencia al input 'precio'.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #3 (permalink)  
Antiguo 28/08/2008, 08:00
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 8 meses
Puntos: 1
Respuesta: problema en evento onchange

Esta puesto .value al hacer la referencia

document.write("<input type='text' id='cantidad"+num+"' onchange=\"document.getElementById('subtotal" + num + "').value =

document.getElementById('precio" + num + "')\"> ");
  #4 (permalink)  
Antiguo 28/08/2008, 08:04
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: problema en evento onchange

Sí, ese value ya lo había visto, me refiero a esta referencia:
Código PHP:
document.getElementById('precio" + num + "'
Falta el value.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #5 (permalink)  
Antiguo 28/08/2008, 08:16
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 8 meses
Puntos: 1
Respuesta: problema en evento onchange

Perfecto, ya lo corregí, voy a continuar para lograr la multiplicación creo que si podre hacerlo, muchas gracias
  #6 (permalink)  
Antiguo 28/08/2008, 09:41
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 8 meses
Puntos: 1
Respuesta: problema en evento onchange

Ya he conseguido la multiplicacion y todo va bien ahora me podras ayudar con lo siguiente: los valores los quiero pasas a una ventana madre para lo que he escrito lo siguietne:

<a href="JavaScript:close();" title="pasar valor" onClick=


window.opener.document.frm.codigo"+cods+"..value = window.document.formu.codigo"+cods+"..value;
window.opener.document.frm.descripcion"+cods+".val ue = window.document.formu.'descripcion"+cods+"'.value;
window.opener.document.frm.precio"+cods+".value = window.document.formu.'precio"+cods+"'.value;

>Regresar a la Ventana Principal</a>

pero cuando regreso a la ventana madre no aparece ningun resultado, esto lo he hecho de manera individual no en un bucle y con parametros
  #7 (permalink)  
Antiguo 28/08/2008, 09:50
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: problema en evento onchange

Si quieres tomar el valor de cods como nombre del objeto habrá que colocarlo entre corchetes o usar eval.

P.S.: No necesitas poner window, es redundante.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #8 (permalink)  
Antiguo 28/08/2008, 10:32
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 8 meses
Puntos: 1
Respuesta: problema en evento onchange

Lo he intentado asi:

<a href="JavaScript:close();" title="pasar valor" onClick=

for (cods=1; cods<=indice;cods++)
{
window.opener.document.frm.eval("codigo" + cods).value = window.document.formu.eval("codigo" + cods).value;
window.opener.document.frm.eval("descripcion" + cods).value = window.document.formu.eval("descripcion" + cods).value;
window.opener.document.frm.eval("precio" + cods).value = window.document.formu.eval("precio" + cods).value;
}
>Regresar a la Ventana Principal</a>

Sin resultado, en mi ventana madre tengo el form con nombre frm y el input con el id= codigo1 en adelante y en mi popup el form es formu y mis inputs estan hechos en el loop como codigo y variable
Quite el window pero tampoco me dio resultado
  #9 (permalink)  
Antiguo 28/08/2008, 10:37
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: problema en evento onchange

No, primero, eval no se usa así, para no complicarte mejor usa corchetes. Segundo, lo mejor es que coloques ese código dentro de una función, y en el onclick solo colocar la llamada a la función.

Un ejemplo de cómo podría ser:
Código PHP:
opener.frm["codigo" cods].value formu["codigo" cods].value
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #10 (permalink)  
Antiguo 28/08/2008, 10:55
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 8 meses
Puntos: 1
Respuesta: problema en evento onchange

hice esto:

function pasarvalor() {

for (cods=1; cods<=indice;cods++) {

opener.frm.["codigo" + cods].value = formu.["codigo" + cods].value;
}
}

y en el enlace:

<a href="JavaScript:close();" title="pasar valor" onclick="pasarvalor()">Regresar a la Ventana Principal</a>

No me da resultado de hecho solo me deja el enlace
  #11 (permalink)  
Antiguo 28/08/2008, 10:59
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: problema en evento onchange

Cambia esto:
Código PHP:
opener.frm.["codigo" cods].value formu.["codigo" cods].value
Por:
Código PHP:
opener.frm["codigo" cods].value formu["codigo" cods].value
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #12 (permalink)  
Antiguo 28/08/2008, 11:02
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 8 meses
Puntos: 1
Respuesta: problema en evento onchange

Muchas gracias, me salvaste lo voy a seguir aplicando hasta dominar este asunto
  #13 (permalink)  
Antiguo 28/08/2008, 11:43
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 8 meses
Puntos: 1
Respuesta: problema en evento onchange

como ya te habras dado cuenta mi programita hace lo siguiente:

1.- Dada una pagina madre al hacer clic me lleva a una ventana hija.
2.- En esta ventana hija leo una base de datos (php).
3. Los resultados los tomo y en base a ellos hago un bucle que me permita con un numero (codigo) dado compara los resultados y estos vertirlos en otros campos.
4. Hacer unas multiplicaciones
5. Enrealidad debo hacer una suma total
para luego pasarlo a la ventana madre.

Estoy haciendo la funcion para sumar los subtotales y que estos al final (antes de pasarse a la ventana madre) me de una suma total en el campo total. por lo que pregunto:

que evento puedo usar para que antes de cerrar la ventana me de la suma total? quise usar onchange y una funcion

Esto es lo que hice:


for (num=1; num<=indice;num++)
{

document.write("<input type='text' id='codigo"+num+"' onchange=\"cambioinput('" + num + "')\"> ");

document.write("<input type='text' id='descripcion" + num + "'>");
document.write("<input type='text' id='precio" + num + "'>");

document.write("<input type='text' id='cantidad"+num+"' onchange=\"document.getElementById('subtotal" + num + "').value =

document.getElementById('precio" + num + "').value * document.getElementById('cantidad" + num + "').value \"> ");

document.write("<input type='text' id='subtotal" + num + "' onchange='sumatotal'><br>");

}

document.write("<input type='text' id='total'><br>");


y la funcion es la siguiente:

function sumatotal()
{

for (sumas=1; sumas<=indice; sumas++)
{
sbttl=document.getElementById("subtotal" + sumas).value;
document.getElementById("total").value = sbttl;

}
}
  #14 (permalink)  
Antiguo 28/08/2008, 11:51
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Pregunta Respuesta: problema en evento onchange

¿En qué momento pretendes que se muestre el total?. De eso depende qué evento vamos a usar.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #15 (permalink)  
Antiguo 28/08/2008, 11:58
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 8 meses
Puntos: 1
Respuesta: problema en evento onchange

Cuando se desee regresar a la ventana madre
  #16 (permalink)  
Antiguo 28/08/2008, 12:08
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: problema en evento onchange

Puedes usar el evento onunload.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #17 (permalink)  
Antiguo 28/08/2008, 12:22
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 8 meses
Puntos: 1
Respuesta: problema en evento onchange

lo hice pero como consigo el resultado cuando los campos fueron creados en un bucle?

Esto es lo que hice:

y en body puse: <body onunload="sumatotal()">

function sumatotal()
{

for (sumas=1; sumas<=indice; sumas++)
{
sbttl=document.getElementById("subtotal" + sumas).value;
document.getElementById("total").value = sbttl;

}
}
  #18 (permalink)  
Antiguo 28/08/2008, 12:27
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Respuesta: problema en evento onchange

¿Lo que quieres hacer es sumar todos los subtotales?. Pues sería algo como esto:
Código PHP:
for (sumas=1sumas<=indicesumas++)
{
sbttl += parseInt(document.getElementById("subtotal" sumas).value);
}
document.getElementById("total").value sbttl
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #19 (permalink)  
Antiguo 28/08/2008, 12:44
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 8 meses
Puntos: 1
Respuesta: problema en evento onchange

al cerrar la ventana hija, supongo que con onunload que puse en el body, puedo de alguna manera tomar el valor Total y ponerlo en un campo en la ventana madre, podría hacerse?
  #20 (permalink)  
Antiguo 28/08/2008, 12:48
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: problema en evento onchange

Sí, con opener.document haces referencia al documento de la ventana padre.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #21 (permalink)  
Antiguo 28/08/2008, 13:05
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 8 meses
Puntos: 1
Respuesta: problema en evento onchange

Hice esto:

opener.document.frm.Total.value = formu.total.value;

pero no me da el resultado

Total es el campo input de la ventana padre.
  #22 (permalink)  
Antiguo 28/08/2008, 13:09
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Pregunta Respuesta: problema en evento onchange

¿Seguro que los tienes dentro de su respectivo form?.

Porque con el código que pusiste en la ventana padre el input Total debería estar dentro de un formulario llamado frm, y en la ventana hija el input total debería tener total como name y estar dentro de un formulario llamado formu.

¿Por qué mejor no trabajas con los id de los input?
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #23 (permalink)  
Antiguo 28/08/2008, 13:14
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 8 meses
Puntos: 1
Respuesta: problema en evento onchange

Seguro estan pero creo que es mejor trabajar con los id, si en mi ventana popup tengo el campo id total como puedo visualizar la suma de los subtotales de lo que se compra o adquiere?

quiza sea mejor no usar el onunload para ver cada vez que hay un subtotal este se refleje en el campo id total.
  #24 (permalink)  
Antiguo 28/08/2008, 13:18
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: problema en evento onchange

En ese caso puedes usar el evento onchange del input. Lo que estaba mal en la primera vez que intentaste usarlo era que no habías puesto los paréntesis () en la llamada a la función.
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #25 (permalink)  
Antiguo 28/08/2008, 13:30
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 8 meses
Puntos: 1
Respuesta: problema en evento onchange

Tengo asi mi input:

for (num=1; num<=indice;num++)
{

document.write("<input type='text' class='input' id='codigo"+num+"' onchange=\"cambioinput('" + num + "')\"> ");

document.write("<input type='text' class='input2' id='descripcion" + num + "'>");
document.write("<input type='text' class='input3' id='precio" + num + "'>");

document.write("<input type='text' class='input4'id='cantidad"+num+"' onchange=\"document.getElementById('subtotal" + num +

"').value = document.getElementById('precio" + num + "').value * document.getElementById('cantidad" + num + "').value \">

");

document.write("<input type='text' class='input5'id='subtotal" + num + "' onchange='sumatotal()'><br>");

}

document.write("<input type='text' name='total' class='input' id='total'><br>");

y la funcion sumatotal:

function sumatotal()
{

for (sumas=1; sumas<=indice; sumas++)
{
sbttl += parseInt(document.getElementById("subtotal" + sumas).value);
}

document.getElementById("total").value = sbttl;

}

pero cuando cambio del campo subtotal a otro campo no me da resultado en total es decir en ninguna parte
  #26 (permalink)  
Antiguo 28/08/2008, 13:32
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
Exclamación Respuesta: problema en evento onchange

¿No será porque aquí te falta un espacio?
Código PHP:
class='input5'id=subtotal 
EDITO: Por lo que veo el onchange no se produce al cambiar el value por código, lo que puedes hacer es al momento de cambiar el value llamar a la función sumatotal().
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #27 (permalink)  
Antiguo 28/08/2008, 13:37
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 8 meses
Puntos: 1
Respuesta: problema en evento onchange

Ya le puse el espacio y sigue de la misma manera
  #28 (permalink)  
Antiguo 28/08/2008, 13:45
Avatar de David
Moderador
 
Fecha de Ingreso: abril-2005
Ubicación: In this planet
Mensajes: 15.720
Antigüedad: 19 años
Puntos: 839
De acuerdo Respuesta: problema en evento onchange

¿Has visto la edición que hice?. El evento onchange no se produce cuando cambiamos el value por código, así que lo que podemos hacer es al momento de cambiar el value de subtotal, llamar a la función sumatotal().
__________________
Por favor, antes de preguntar, revisa la Guía para realizar preguntas.
  #29 (permalink)  
Antiguo 28/08/2008, 13:49
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 8 meses
Puntos: 1
Respuesta: problema en evento onchange

Si lo lei y estoy tratando de entenderlo para cambiarlo
  #30 (permalink)  
Antiguo 28/08/2008, 14:04
 
Fecha de Ingreso: septiembre-2003
Ubicación: Merida, yucatan
Mensajes: 282
Antigüedad: 20 años, 8 meses
Puntos: 1
Respuesta: problema en evento onchange

hice esto para cambiarlo pero no me funcionó:

document.write("<input type='text' class='input4'id='cantidad"+num+"' onchange=\"document.getElementById('subtotal" + num +

"').value = document.getElementById('precio" + num + "').value * document.getElementById('cantidad" + num + "').value; \"

onchange='sumatotal()'>
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 17:40.