Foros del Web » Programando para Internet » Javascript »

Problema con una funcion

Estas en el tema de Problema con una funcion en el foro de Javascript en Foros del Web. el problema que tengo es que tengo un formulario que constituye una nomina entonces creo en html inputtext del modo siguiente: @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código HTML: ...
  #1 (permalink)  
Antiguo 08/04/2011, 10:27
 
Fecha de Ingreso: noviembre-2010
Mensajes: 181
Antigüedad: 13 años, 5 meses
Puntos: 2
Problema con una funcion

el problema que tengo es que tengo un formulario que constituye una nomina entonces creo en html inputtext del modo siguiente:
Código HTML:
Ver original
  1. [HTML]<input type="text" nombre="diastrab[]" id="diastrab[]" fncSumar() />
  2. <input type="text" nombre="pagoxdia[]" id="pagoxdia[]" fncSumar() />[/HTML]

y el problema es que no hace la operacion y la verdad como no tengo muchos conocimientos en javascript pues me dificulta el saber cual es el problema espero me puedan ayudar.

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. function fncSumar(c){
  3.     campo=c.form;
  4.     for (var i = 0; i < campo.length-1; i++) {
  5.     caja=document.forms["form1"].elements;
  6.     var numero1 = Number(caja["diastrab[i]"].value);
  7.     var numero2 = Number(caja["pagoxdia[i]"].value);
  8.     resultado=numero1*numero2;
  9.     if(!isNaN(resultado)){
  10.         caja["total_pago"].value=numero1*numero2;
  11.     }
  12.   }
  13. }
  14. </script>
  #2 (permalink)  
Antiguo 08/04/2011, 10:47
 
Fecha de Ingreso: mayo-2009
Mensajes: 201
Antigüedad: 15 años
Puntos: 9
Respuesta: Problema con una funcion

no entiendo muy bien que hare ahi metida la funcion, pero ppara empezar, si no dices que es javascript es imposible que se ejecute.

Código HTML:
Ver original
  1. <input type="text" nombre="diastrab[]" id="diastrab[]" <script> fncSumar()</script> />
  2. <input type="text" nombre="pagoxdia[]" id="pagoxdia[]"<script> fncSumar()</script> />

Igual que tienes las etiuquetas <script> en la definicion de la funcion, debes tenerlas en todos los codigos javascript


de todas formas no creo que ahi en medio de los inputs pinten mucho.
que puieres que pase?
Cuando quieres que pase?
  #3 (permalink)  
Antiguo 08/04/2011, 10:48
Avatar de Perr0  
Fecha de Ingreso: mayo-2005
Ubicación: Santiago de Chile, Chile
Mensajes: 676
Antigüedad: 19 años
Puntos: 79
Respuesta: Problema con una funcion

disculpa pero estas con unos errores horribles

primero los tag se escriben en estos signos <> y no corchetes []

lo otro para llamar la funcion fncSumar()

en los inputs reemplaza fncSumar() por onclick="fncSumar()"

de verdad no me atrebo a seguir mirando tu código porque ya me dio un principio de autopsia...te recomiendo que leas y te informes, para que puedas entender mas las respuestas. Si no sabes javascript hay muchos manuales que te ayudaran como www.librosweb.es.

salu2
__________________
Numerador Mp3 en Access =)
http://www.mediafire.com/download/r9...pdw/mp3(2).zip
  #4 (permalink)  
Antiguo 08/04/2011, 10:57
 
Fecha de Ingreso: noviembre-2010
Mensajes: 181
Antigüedad: 13 años, 5 meses
Puntos: 2
Respuesta: Problema con una funcion

mira lo que pasa que los tags a los que te refieres del html pues si enverdad no es que me haya equivocado son los tagas que puse en este foro para que se viera como html por un lado por otro lado el llamado a la funcion si esta mal pero fue al escribirlo aqui en el foro por que en el codigo lo tengo como tu lo mencionas perro onclick="fncSumar()"

entonces esos 2 errores que me detectaste son mera transcripcion aqui al foro pero en codigo estoy bien el problema real es que ya no voy a obiar cosas por que las obvio suponiendo que el preblema que tengo no es tan simple pero bueno ahi va el codigo tal cual debe de ser pero sigo necesitando ayuda pues aunque esta bien escrito no me funciona.


Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. function fncSumar(c){
  3.     campo=c.form;
  4.     for (var i = 0; i < campo.length-1; i++) {
  5.     caja=document.forms["form1"].elements;
  6.     var numero1 = Number(caja["diastrab[i]"].value);
  7.     var numero2 = Number(caja["pagoxdia[i]"].value);
  8.     resultado=numero1*numero2;
  9.     if(!isNaN(resultado)){
  10.         caja["total_pago"].value=numero1*numero2;
  11.     }
  12.   }
  13. }
  14. </script>

Código HTML:
Ver original
  1. <input name="diastrab[]" type="text" id="diastrab[]" size="15" onKeyUp="fncSumar()" />
  2. <input name="pagoxdia[]" type="text" id="pagoxdia[]" size="15" onKeyUp="fncSumar()" />
  3. </body>
  4. </html>
  #5 (permalink)  
Antiguo 08/04/2011, 11:15
Avatar de Perr0  
Fecha de Ingreso: mayo-2005
Ubicación: Santiago de Chile, Chile
Mensajes: 676
Antigüedad: 19 años
Puntos: 79
Respuesta: Problema con una funcion

para ahorrar trabajo entendiendo lo inentendible, porque no se si obviaste el form, si existen mas inputs...bla bla bla.....
, esto es lo que quieres hacer?

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. function fncSumar(c){
  3.     d=document.f.diastrab;
  4.     p=document.f.pagoxdia; 
  5.     r=document.f.res;  
  6.     if(!d.value || !p.value) return false;
  7.     if(isNaN(d.value) || isNaN(p.value)) return false;
  8.     res=d.value*p.value;
  9.     r.value=res;
  10. }
  11. </script>
  12.  
  13. <form name="f">
  14. <input name="diastrab" type="text" size="15" onKeyUp="fncSumar()" />
  15. <input name="pagoxdia" type="text" size="15" onKeyUp="fncSumar()" />
  16. <p>resultado <input name="res" type="text" size="15" readonly /></p>
  17. </form>

salu2
__________________
Numerador Mp3 en Access =)
http://www.mediafire.com/download/r9...pdw/mp3(2).zip
  #6 (permalink)  
Antiguo 08/04/2011, 11:27
 
Fecha de Ingreso: noviembre-2010
Mensajes: 181
Antigüedad: 13 años, 5 meses
Puntos: 2
Respuesta: Problema con una funcion

si se me olvido el form y esta bien lo que me propones pero sigue sin funcionar por que mis inputtext son diastrab[] con corches por que como son muchos o sea mira lo que hago pido el numero de trabajadores a los que se les va a pagar entonces pueden ser 10 y creo diez inputtext de diastrab[] y diez de pagoxdia[] entonces tengo un array de inputtext y el problema es que no se como ´procesar en javascript una funcion que reciba los valores del array diastrab[] y del array pagoxdia[].

ese es mi problema por que la funcion que tengo mas la que tu me estas proponiedo si funcionan para un inputtext diastrab y para un inputtext pagoxdia pero para cuando son varios ya no.
  #7 (permalink)  
Antiguo 08/04/2011, 12:43
 
Fecha de Ingreso: mayo-2009
Mensajes: 201
Antigüedad: 15 años
Puntos: 9
Respuesta: Problema con una funcion

mira, no puedes esribir tres lineas sin un solo punto o coma. relee tu frase sin imagenarte las pausas, proque nosotros no sabemos donde van.

Cuando tienes una duda no pongas un codigo que sabes que esta mal (me refiero a lo de onclick).

Te voy a resolver tu duda.
Si estaclaro clarinete que olvidandoceme el form pos como que no claro lo de cos corches pos son corches tu sabras que es importa pero aqui no porque esto no es lo bueno lo bueno es lo otro lo que quiero es que funcione alla claro porque aqui como que para que no como lo ven?

Entendiste algo? lo mismo entendemos nosotros (al menos yo) de lo que tu nos has puesto.
Frases cortas y claras.
Explicando que quieres hacer, que error te da y enseñando el codigo.
Ademas no reescribas el codigo, copialo. si hay fallos los localizamos.
A que asi mejor?
  #8 (permalink)  
Antiguo 08/04/2011, 12:57
Avatar de Perr0  
Fecha de Ingreso: mayo-2005
Ubicación: Santiago de Chile, Chile
Mensajes: 676
Antigüedad: 19 años
Puntos: 79
Respuesta: Problema con una funcion

disculpe tuxceno, pero hubiera sido muy preferible que te hubieras dado un "pequeño" esfuerzo en postear...

no porque postee aquí no tengo cosas que hacer...asi que esfuerzate en redactar y escribir bien...minímo no crees.

ahora a lo tuyo......

el código de abajo no coloque id ni names, para que entiendas como funciona, tu se los puedes agregar con los arrays para recogerlos con POST o GET o como quieras...espero te sirva

Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. function fncSumar(objeto,x){
  3.     if(x==1){
  4.         d=objeto;
  5.         do
  6.         objeto=objeto.nextSibling;
  7.         while(objeto.type!="text");
  8.         p=objeto;
  9.     }else if(x==-1){
  10.         p=objeto;
  11.         do
  12.         objeto=objeto.previousSibling;
  13.         while(objeto.type!="text");
  14.         d=objeto;
  15.     }
  16.     objeto=p;  
  17.     do
  18.     objeto=objeto.nextSibling;
  19.     while(objeto.tagName!="INPUT");
  20.     r=objeto;
  21.     if(!d.value || !p.value) return false;
  22.     if(isNaN(d.value) || isNaN(p.value)) {
  23.         r.value="";
  24.         return false;
  25.     }
  26.     res=d.value*p.value;
  27.     r.value=res;
  28. }
  29.  
  30. </script>

Código HTML:
Ver original
  1. <form name="f">
  2. <form name="f">
  3. <input type="text" size="15" onKeyUp="fncSumar(this,1)" />
  4. <input type="text" size="15" onKeyUp="fncSumar(this,-1)" />
  5. resultado <input type="text" size="15" readonly /><br />
  6. <input type="text" size="15" onKeyUp="fncSumar(this,1)" />
  7. <input type="text" size="15" onKeyUp="fncSumar(this,-1)" />
  8. resultado <input type="text" size="15" readonly /><br />
  9. <input type="text" size="15" onKeyUp="fncSumar(this,1)" />
  10. <input type="text" size="15" onKeyUp="fncSumar(this,-1)" />
  11. resultado <input type="text" size="15" readonly /><br />
  12. <input type="text" size="15" onKeyUp="fncSumar(this,1)" />
  13. <input type="text" size="15" onKeyUp="fncSumar(this,-1)" />
  14. resultado <input type="text" size="15" readonly /><br />
  15. <input type="text" size="15" onKeyUp="fncSumar(this,1)" />
  16. <input type="text" size="15" onKeyUp="fncSumar(this,-1)" />
  17. resultado <input type="text" size="15" readonly />
  18. </form>

salu2

NOTA: lo que dice monxas verdad, tómalo como crítica constructiva
__________________
Numerador Mp3 en Access =)
http://www.mediafire.com/download/r9...pdw/mp3(2).zip
  #9 (permalink)  
Antiguo 08/04/2011, 12:58
 
Fecha de Ingreso: noviembre-2010
Mensajes: 181
Antigüedad: 13 años, 5 meses
Puntos: 2
Respuesta: Problema con una funcion

atendiendo a lo que mencionas, bueno pues voy a tratar de ser mas explicito y poner la puntuacion necesaria para que sea mas entendible lo que quiero expresar.
bueno el problema que tengo es que teno una array dinamico de inputtext en una pagina html los cuales se crean mediante un bucle for(), dependiedo de cuantos quiera el usuario.
el detalle es que necesito que si el usuario pone en el primer inputtext diastrab[1]=5, y en el primer inputtext pagoxdia[]=10 que en inputtext total_pago[1]=50 pero en tiempo real.
y con el codigo que les muestro no funciona. el problema esta en que no se procesar el array de valores en javascript creo yo.


Código HTML:
Ver original
  1. <script type="text/javascript">function fncSumar(c){
  2.     campo=c.form;
  3.     for(var i=0;i < campo.length-1;i++){
  4.      d=document.form1.diastrab[i];
  5.      p=document.form1.pagoxdia[i];
  6.      //r=document.form1.total_pago[i];
  7.      if(!d.value || !p.value) return false;
  8.      if(isNaN(d.value) || isNaN(p.value)) return false;
  9.          res=d.value*p.value;
  10.         document.form1.total_pago[i]= r.value;
  11.     }
  12. }
  13. </script>

Código HTML:
Ver original
  1. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  2. <html xmlns="http://www.w3.org/1999/xhtml">
  3. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  4. <title>Documento sin título</title>
  5. <link href="file:///C|/xampp/htdocs/interprog/listado_mat.css" rel="stylesheet" type="text/css" />
  6. </head>
  7.  
  8. <form id="form1" name="form1" method="POST" action="">
  9. <input name="diastrab[]" type="text" id="diastrab[]" size="6" class="validate-integer" onKeyUp="fncSumar(this)"/>
  10. <input name="pagoxdia[]" type="text" id="pagoxida[]" size="6" class="validate-float" onKeyUp="fncSumar(this)"/>
  11. <input type="text" name="total_pago[]" id="total_pago[]" />
  12. </form>
  13. </body>
  14. </html>
  #10 (permalink)  
Antiguo 08/04/2011, 13:03
Avatar de Perr0  
Fecha de Ingreso: mayo-2005
Ubicación: Santiago de Chile, Chile
Mensajes: 676
Antigüedad: 19 años
Puntos: 79
Respuesta: Problema con una funcion

una página con la demo
http://perr0.netii.net/exs/multimultiplicacion/
__________________
Numerador Mp3 en Access =)
http://www.mediafire.com/download/r9...pdw/mp3(2).zip
  #11 (permalink)  
Antiguo 08/04/2011, 14:00
 
Fecha de Ingreso: noviembre-2010
Mensajes: 181
Antigüedad: 13 años, 5 meses
Puntos: 2
Respuesta: Problema con una funcion

Gracias perro eso es exactamente lo que necesito lo unico que no entiendo son los parametros que lleva la funcion fncSumar(this,1)"
fncSumar(this,-1)"

pero por lo demas esta excelente paraceme que ya entendi lo de los parametros, 1, -1 te sirven para idetificar quien envia el valor a la funcion javascript.

te agradezco bastante voy a tratar de adaptarlo.
  #12 (permalink)  
Antiguo 08/04/2011, 14:12
 
Fecha de Ingreso: noviembre-2010
Mensajes: 181
Antigüedad: 13 años, 5 meses
Puntos: 2
Respuesta: Problema con una funcion

Una pregunta mas a perr0 oye y puedo anexarle el nombre al inputtext ya que necesito almacenar en una bd de mysql lo que contenga cada inputtext
  #13 (permalink)  
Antiguo 08/04/2011, 20:45
Avatar de Perr0  
Fecha de Ingreso: mayo-2005
Ubicación: Santiago de Chile, Chile
Mensajes: 676
Antigüedad: 19 años
Puntos: 79
Respuesta: Problema con una funcion

asi es tuxeno, lo deje sin nombre y id para que "tu jueges",

ahi colocas esos name="nombre[]"

para despues capturarlos como un array.

lo habia escrito con anterioridad...

salu2
__________________
Numerador Mp3 en Access =)
http://www.mediafire.com/download/r9...pdw/mp3(2).zip

Etiquetas: funcion
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:41.