• Viernes 8 de Noviembre de 2024, 14:39

Autor Tema:  Llamada metodo desde boton  (Leído 10538 veces)

darupi

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Llamada metodo desde boton
« en: Miércoles 12 de Agosto de 2009, 13:25 »
0
Hola!
Queria saber si me podeis ayudar en esto.
Tengo una tabla que se crea dinamicamente (conforme los usuarios que tenga la base de datos tendra mas filas).
Por cada fila, al inicio hay un checkBox, a los cuales quiero asignarles una funcion en JavaScript y que si hay alguno que este activado active un botón, sino no.

Os pongo mi código pero no me funciona, os pido que me echeis una mano por favor:

Donde se crea el checkBox dinamicamente
Código:
Código: Text
  1.  
  2. "<TD width="20%"><input type="checkbox" id="caja" + i + "" onClick="checks(" + numeroUsuarios + ")"></TD>";
  3.  
  4.  

Y el codigo del Script
Código:
Código: Text
  1.  
  2. <script language="javaScript" type="text/javascript">
  3.     function checks(numeroChecks)
  4.     {
  5.         boolean algunoActivo = false;
  6.         var boton = document.getElementById("eliminar");
  7.  
  8.         var x;
  9.         for(i = 1; i <= numeroChecks && !algunoActivo; i++)
  10.         {
  11.             x = document.getElementById("caja" + i);
  12.             if(x.checked=true)
  13.             {
  14.                 algunoActivo = true;  
  15.             }
  16.         }
  17.         if(algunoActivo)
  18.         {
  19.             boton.disabled = false;
  20.         }
  21.         else
  22.         {
  23.             boton.disabled = true;
  24.         }
  25.     }
  26. </script>
  27.  
  28.  

Pues bien, no se porque cuando hago click en los checkBox no me activa el boton.
Alguien sabe que cambio tengo que hacer? Gracias!

Thanatos-chan

  • Miembro MUY activo
  • ***
  • Mensajes: 136
  • Nacionalidad: do
    • Ver Perfil
Re: Llamada metodo desde boton
« Respuesta #1 en: Miércoles 12 de Agosto de 2009, 15:10 »
0
hola darupi,

para poder echarte una mano, favor has lo siguiente.

1-especifica, brevemente(2 lineas) en que consiste tu proyecto
2-especifica en que IDE(interface de programacion, netbeans,eclipse,otro) estas trabajando
3-publica todo tu codigo separado por pagina y lenguaje. ej:

Citar
pagina 1
//desde aqui codigo jsp

//hasta aqui condigo jsp

//desde aqui codigo javascript

//hasta aqui codigo javascript

saludos!
Que es un genio???? yo superare a un genio con trabajo duro, y eso es todo.

darupi

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Llamada metodo desde boton
« Respuesta #2 en: Miércoles 12 de Agosto de 2009, 15:18 »
0
Gracias por atenderme!
Estoy utilizando Eclipse, haciendo paginas JSP.

La cosa es que yo tengo una tabla HTML donde muestro informacion de usuarios y donde, por cada linea, inserto un checkBox.
Lo que quiero es que cada vez que haga click en algun checbox, compruebe si hay alguno chequeado.
Si lo hay -> Quiero activar un boton para eliminar ese usuario
Si no hay ninguno chequeado -> Desactivar boton para eliminar

He conseguido esto:
Código: Text
  1.  
  2. <script language="javaScript" type="text/javascript">
  3.     function activaBoton(c)
  4.     {
  5.         document.getElementById("eliminar").disabled = !c.checked;
  6.     }
  7. </script>
  8.  
  9.  
El problema es que gastando esto, si activo 2 checks, se desactiva el botón, porque lo activa el primero y lo desactiva el segundo. Y me gustaría que mientras hayan activos, se siga manteniendo el botón activo. O también hacer que solo haya un checkbox activo solamente.

Thanatos-chan

  • Miembro MUY activo
  • ***
  • Mensajes: 136
  • Nacionalidad: do
    • Ver Perfil
Re: Llamada metodo desde boton
« Respuesta #3 en: Miércoles 12 de Agosto de 2009, 15:38 »
0
que tal darupi,

lo que pones es solo una funcion javascript que poner la propiedad disable si la variable c.checked es 0

si por algun motivo tienes lo siguiente en el codigo html

<input id=eliminar name=eliminar type=button>

dado que estas usando getelementbyid cualquier elemento que tenga el id "eliminar" se pondra disable.

ademas con lo que pones es solo la funcion javascript

donde la esta usando??

favor publica tu codigo completo por pagina para entener lo que estas haciendo.

saludos!
Que es un genio???? yo superare a un genio con trabajo duro, y eso es todo.

darupi

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Llamada metodo desde boton
« Respuesta #4 en: Miércoles 12 de Agosto de 2009, 15:57 »
0
Jejeje, ok!!

Mira, desde JSP llamo a esta función:
Código: Text
  1.  
  2. <form action="gestionUsuarios.jsp" method="POST">
  3.         <%
  4.             out.print(creaTablaUsuarios.creaTabla());
  5.         %>
  6.         <div align="center">        
  7.             <input name ="eliminar" type="submit" value="Eliminar" disabled = "disabled">
  8.         </div>      
  9.     </form>
  10.  
  11.  

Y desde aqui es donde se crea la tabla dinamicamente:
Código: Text
  1.  
  2. package grupo10;
  3.  
  4. import java.sql.Connection;
  5. import java.sql.DriverManager;
  6. import java.sql.ResultSet;
  7. import java.sql.Statement;
  8.  
  9. public class creaTablaUsuarios
  10. {
  11.     public static String creaTabla()
  12.     {
  13.         String solucion = "";
  14.        
  15.         try
  16.         {
  17.             Class.forName("com.mysql.jdbc.Driver").newInstance();
  18.             Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/pepe?user=root&password=");
  19.             Statement Estamento = conn.createStatement();      
  20.             ResultSet rs = Estamento.executeQuery("select * from usuario order by nombre");
  21.                        
  22.             //Per a crear la taula
  23.             solucion = "<DIV align="center">";
  24.                
  25.             solucion = solucion  + "<TABLE id="miTabla" cellspacing = "2" CellPadding = "3" Border = "2" With = "100%">";
  26.             solucion = solucion  + "<TR>";          
  27.             solucion = solucion  + "<th bgcolor=White></th>";
  28.             solucion = solucion  + "<th bgcolor=White>USUARIO</th>";
  29.             solucion = solucion  + "<th bgcolor=White>CONTRASEÑA</th>";
  30.             solucion = solucion  + "<th bgcolor=White>TIPO</th>";
  31.                                    
  32.             solucion = solucion  + "</TR>";
  33.                        
  34.             int i = 1;
  35.             //Ciclo de lectura del resultset
  36.             while(rs.next())
  37.             {
  38.                 solucion = solucion  + "<TR>";
  39.                 solucion = solucion  + "<TD width="20%"><input type="checkbox" id="caja" + i + "" name="caja" + i + "" onclick="activaBoton(this)"></TD>";
  40.                 solucion = solucion  + "<TD width="25%"><i>" + rs.getString("nombre") + "</i></TD>";
  41.                 solucion = solucion  + "<TD width="25%"><i>" + rs.getString("contraseña") + "</i></TD>";
  42.                 solucion = solucion  + "<TD width="25%"><i>" + rs.getString("tipo") + "</i></TD>";
  43.                 solucion = solucion  + "</TR>";
  44.                 i++;
  45.             }
  46.             solucion = solucion  + "</TABLE>";
  47.             solucion = solucion  + "</DIV>";
  48.             //Cerrando resultset
  49.             rs.close();
  50.             Estamento.close();
  51.             conn.close();
  52.         }
  53.         catch (Exception e)
  54.         {
  55.             e.printStackTrace();
  56.         }
  57.         return solucion;
  58.     }
  59. }
  60.  
  61.  

Lo que me gustaria es hacer una funcion en Javascript, a la que le pasara el numero de usuarios que tengo en la base de datos, y haga un recorrido por todos esos checks. Si al final hay alguno activado que active el boton de eliminar, si no hay ninguno activado que desactive el boton de eliminar. O como poder hacer para restringir que solo haya un checbox activo solamente.

Gracias!!

Thanatos-chan

  • Miembro MUY activo
  • ***
  • Mensajes: 136
  • Nacionalidad: do
    • Ver Perfil
Re: Llamada metodo desde boton
« Respuesta #5 en: Miércoles 12 de Agosto de 2009, 16:56 »
0
que tal darupi,

te pondre un ejemplo.

 si tomas el metodo que indicas en la primera seccion de codigo "out.print(creaTablaUsuarios.creaTabla());"  te va a crear tu tabla dinamica. asi que despues de ejecutado tu donde tienes el "form" queda mas o menos asi:

Citar

 <form action="gestionUsuarios.jsp" method="POST">



//este es el codigo generado por JAVA
<DIV align="center">
               
   <TABLE id="miTabla" cellspacing = "2" CellPadding ="3" Border = "2" With = "100%">

          <TR>        
              <th bgcolor=White></th>
              <th bgcolor=White>USUARIO</th>
              <th bgcolor=White>CONTRASEÑA</th>
              <th bgcolor=White>TIPO</th>

     </TR>
                       
          <TR>
           
               <TD width="20%"><input type="checkbox" id="caja1" name="caja1" onclick="activaBoton(this)"></TD>
               <TD width="25%"><i>"nombre1"</i></TD>"
               <TD width="25%"><i>"contrasena1"</i></TD>
               <TD width="25%"><i>"tipo1"</i></TD>"
         </TR>
       
        </TABLE>
</DIV>



         <div align="center">      
             <input name ="eliminar" type="submit" value="Eliminar" disabled = "disabled">
         </div>    
     </form>


lo primero que debes ver es que segun esta linea del paquete de java

solucion = solucion  + "<TD width="20%"><input type="checkbox" id="caja" + i + "" name="caja" + i + "" onclick="activaBoton(this)"></TD>";

tus checkbox se van a llamar caja1,caja2,caja3.

dependiendo de la cantidad de usuarios

lo segundo es que aunque no pusiste la parte de los tags html donde esta el head, por lo que no se ve el el archivo javascript que esta incluyendo, pero me imagino que tendras un archivo javascript el cual esta incluyendo en tu pagina si es que no tienes la funcion en la misma pagina,(si es asi olvida esta parte).

tercero al metodo de java terminar te quedaran N numero de checkbox con el evento onclick=activarboton(this), si te fijas con el evento se dispara on click y el parametro es this lo que significa el valor del objeto actual.

si tenias un checkbox cliqueado y lo descliqueas(el das un click) el parametro que el pasas es false y por eso se deactiva el boton submit que se llama "eliminar"
por lo tanto es poblema de logica.(espero hayas entendido esta parte)


cuarto y lo mas importante:

darupi, estas desarrollando en JSP. la estructura de una aplicacion jsp es mas o menos lo siguiente.

JSP-->SERVLET
una vez tu presionas el boton submit, se estas soltando el control a el servlet para que el maneje lo que sigue.

tu en tu ejemplo tienes que tu form tiene como action="gestionUsuarios.jsp"

segun el esquema de funcionamiento cuando tu haces submit todos tus datos iran a parar a la pagina "gestionusuarios.JSP" y aqui sucedera la magia  :lol:  es decir cualquier logica o manejo de datos.

quinto:

segun lo que quieres hacer una estructura de funcionamiento seria.
ej:

pagina_principal.jsp //aqui tienes las presentacion, es decir tu tabla de usuarios.
funciones.js /aqui estan tus funciones javascript
gestionusuarios.jsp //donde tienes tu logica de datos, es decir donde revisas si el checkbox esta marcado y mandasa la base de datos a borrar el usuario.


nota: si te preguntas porque le llamo a gestionusuarios.jsp, servlet, es por JAVA convierte en un servlet el codigo que tienes en esa pagina de manera automatica.

nota2:  yo me considero un novato en jsp, asi que por mi experiencia para hacer este programa requerieres lo siguiente, poniendo en 1 a un novato y en 10 a un experto.

html=3
java=2
jsp=2
javascript=2
sql=1

si te sientes que no puedes hacerlo, deberias leer un poco,

te recomiendo  "jspheadfirst" exelente libro y si no lees ingles, intenta la pagina de eclipse o netbeans, tienes varios manuales.

saludos!!
Que es un genio???? yo superare a un genio con trabajo duro, y eso es todo.

darupi

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Llamada metodo desde boton
« Respuesta #6 en: Miércoles 12 de Agosto de 2009, 17:07 »
0
Jejeje. Gracias por todo.

Te comento:

Punto 1 -> Si, por cada usuario que exista en la BD las cajas se van a llamar caja1, caja2, caja3, ... hasta los n usuarios que hay en la BD.

Punto 2 -> Si, el Script esta importado de otra pagina jsp, pero he pensado que no hacia falta ponerlo :p

Punto 3 -> Entonces me sugieres que haga un recorrido de todas las cajas en el script? Desde 1 hasta n? No?

Punto 4 -> Sip, se que cuando hago el submit le mando todo lo que hay dentro del tag <form>...</form> :)

Punto 5 -> En mi caso, tengo todo en la misma página. Explico. Antes de cargar nada de la página compruebo que el request tenga valor. Si existe algun checkBox es porque la lista ya ha sido creada y hay que comprobar que algun checkBox esta activado para eliminar. Una vez eliminados, se hace la carga de la página y se muestra actualizada ;)

Ahora me pondre a mirar cómo hacer para mantener el botón activo si hay uno o mas de un check activo. Si lo consigo pongo el código por aqui. De todas formas sigo sin saber como tirar para adelante :(

Thanatos-chan

  • Miembro MUY activo
  • ***
  • Mensajes: 136
  • Nacionalidad: do
    • Ver Perfil
Re: Llamada metodo desde boton
« Respuesta #7 en: Miércoles 12 de Agosto de 2009, 17:17 »
0
que tal darupi,

lo que sigue es ver si los elemetos de la forma estan llegando hasta el servlet(gestionusuarios.jsp)
y si estan llegando ver como estas manejando los mismo en la pagina gestionusuarios.jsp

favor publica el contenido de l a pagina gestionusuarios.jsp

nota: para evitar que el boton de submit se inactive, solo tienes que hacer un recorrido por todos los checkbox y crear un if donde solo se deshabilite si no existe ningun checkbox marcado.
Que es un genio???? yo superare a un genio con trabajo duro, y eso es todo.

darupi

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Llamada metodo desde boton
« Respuesta #8 en: Miércoles 12 de Agosto de 2009, 17:20 »
0
Sip, mira lo que he hecho.

Pongo este código:
Código: Text
  1.  
  2. <script language="javaScript" type="text/javascript">
  3.     function botonEliminar(numeroChecks)
  4.     {
  5.         var x;
  6.         String aux = "";
  7.         boolean encontrado = false;
  8.         var boton = document.getElementById("eliminar");
  9.        
  10.         for(var i = 1; i <= numeroChecks && !encontrado; i++)
  11.         {
  12.             aux = "caja" + i;
  13.             x = document.getElementsByName(aux);
  14.             if(x.checked == true)
  15.             {
  16.                 encontrado = true;
  17.             }
  18.         }
  19.         if(encontrado)
  20.         {
  21.             boton.disabled = false;
  22.         }
  23.         else
  24.         {
  25.             boton.disabled = true;
  26.         }
  27.     }
  28. </script>
  29.  
  30.  

Y en la asignación a los checkBox
Código: Text
  1.  
  2. "<TD width="20%"><input type="checkbox" id="caja" + i + "" name="caja" + i + "" onclick="botonEliminar(2)"></TD>";
  3.  
  4.  

Pero es que no entra a la función! :@

darupi

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Llamada metodo desde boton
« Respuesta #9 en: Miércoles 12 de Agosto de 2009, 17:26 »
0
Mira, el archivo gestionSMS.jsp es este
Código: Text
  1.  
  2. <%@ page contentType="text/html;charset=windows-1252"%>
  3. <%@ include file="compruebaSession.jsp" %>
  4. <%@ include file="imports.jsp" %>
  5.  
  6. <%
  7.         String campoTipo = request.getParameter("tipoNuevo");
  8.         String campoNombre = request.getParameter("usuarioNuevo");
  9.         String campoContraseña = request.getParameter("contraseñaNueva");
  10.         String x = "";     
  11.        
  12.         if(campoNombre != null && campoNombre != "" &&
  13.             campoContraseña != null && campoContraseña != "" &&
  14.                 campoTipo != null && campoTipo != "")
  15.         {
  16.             if(Integer.parseInt(campoTipo) == 1)
  17.                 x = "Admin";
  18.             else
  19.                 x = "Usuario";
  20.             insertaUsuario.añadirUsuario(x,campoNombre,campoContraseña);
  21.         }
  22.        
  23.         String combo = "";
  24.         String usuario = "";
  25.         for(int i = 1; i <= consultaUsuarios.numeroUsuarios(); i++)
  26.         {
  27.             combo = request.getParameter("caja" + i);
  28.             if(combo != null && combo != "")
  29.             {
  30.                 if (combo.compareTo("on") == 0)
  31.                 {
  32.                     usuario = consultaUsuarios.nombreUsuario(i);
  33.                     borraUsuario.borraElUsuario(usuario);
  34.                 }
  35.             }
  36.         }
  37. %>
  38. <html>
  39.  
  40.     <head>
  41.         <meta http-equiv="Content-Type" content="text/html; charset=windows-1252"/>
  42.         <title>Usuarios</title>
  43.         <%@ include file="scriptsGestionUsuarios.jsp" %>                
  44.     </head>
  45.    
  46.     <body>
  47.     <table cellspacing="2" cellpadding="3" border="0" width="100%">
  48.         <tr>
  49.             <td width="33%">
  50.                 <div align="left">
  51.                     <form action="gestionUsuarios.jsp">
  52.                         <input type="image" src="logo_grupo10.gif"/>            
  53.                         <font face="Calibri">
  54.                             <font size="5">
  55.                                 Gestión usuarios
  56.                             </font>
  57.                         </font>
  58.                     </form>
  59.                 </div>
  60.             </td>
  61.             <td width="34%">
  62.                 <div align="right">
  63.                     <form action="desloguear.jsp" method="POST">
  64.                         <input type="submit" name="botonLogout" value="Desconectar"/>
  65.                     </form>
  66.                 </div>
  67.             </td>
  68.         </tr>
  69.     </table>
  70.             <p>
  71.                  
  72.             </p>
  73.            
  74.             <p align="center">
  75.                 <font face="Calibri" size="4" face="Calibri" size="4">
  76.                     <b>
  77.                         <u>Listado</u>
  78.                     </b>
  79.                 </font>
  80.             </p>
  81.            
  82.     <form action="gestionUsuarios.jsp" method="POST">
  83.         <%
  84.             out.print(creaTablaUsuarios.creaTabla());
  85.         %>
  86.         <div align="center">       
  87.             <input name ="eliminar" type="submit" value="Eliminar" disabled = "disabled">
  88.         </div>     
  89.     </form>
  90.            
  91.     </body>
  92. </html>
  93.  
  94.  

Thanatos-chan

  • Miembro MUY activo
  • ***
  • Mensajes: 136
  • Nacionalidad: do
    • Ver Perfil
Re: Llamada metodo desde boton
« Respuesta #10 en: Miércoles 12 de Agosto de 2009, 18:08 »
0
que tal darupi,

solo una salvedad

tanto en la pagina donde tienes el primer form y dentro de la pagina gestionsms.jsp donde tienes el mismo form al final el action
 de los forms es "gestionUsuarios.jsp"

como ya sabras cuando presionas submit, tanto en tu primera pagina como en la pagina gestionsms.jsp, tu servidor de aplicaciones te redireccionara a la pagina "gestionUsuarios.jsp" por tanto si tu "logica" esta en la pagina "gestionsms.jsp" deberias cambiar el action de los forms.

si tomas como ejemplo en otro forms que tienes, el mismo tiene como action=deslogear.jsp, por tanto cuando hagas click en el boton de deslogear, tu servidor se ira a la pagina deslogear.jsp

terminada la salvedad

intenta probar lo siguiente.

dado que la parte que te interesa es si borrar o no.

lo primero que debes hacer es un debug de la app, utilizando un break point.  en tu archivo "gestionSMS.jsp" revisas por los siguientes parametros

String campoTipo = request.getParameter("tipoNuevo");
String campoNombre = request.getParameter("usuarioNuevo");
String campoContraseña = request.getParameter("contraseñaNueva");

pero en ninguna de tus paginas aparecen elementos llamados "tipoNuevo","usuarionuevo","contraseñaNueva" si no los estas usando o planeas usarlos deberias borrar esas lineas.

anexo te pongo un ejemplo del archivo gestionsms.jsp simplificado.
Citar
 
<%
       
         String combo = "";
        String usuario = "";
         for(int i = 1; i <= 2; i++)
         {
             combo = request.getParameter("caja" + i);
             if(combo != null && combo != "")
             {
                 if (combo.compareTo("on") == 0)
                 {
                     
              out.print("el parametro del check es pasado correctamente");
             
   }
             }
         }
 %>


crea un nuevo proyecto y copia el contenido del archivo gestionsms.jsp simplicado nombrandolo gestionprueba.jsp

a continuacion crea otro archivo, principal.jsp
y pon el siguiente codigo

Citar

<html>
<head>

 <script language="javaScript" type="text/javascript">
     function botonEliminar(numeroChecks)
     {
         var x;
         String aux = "";
         boolean encontrado = false;
         var boton = document.getElementById("eliminar");
       
         for(var i = 1; i <= numeroChecks && !encontrado; i++)
       {
             aux = "caja" + i;
             x = document.getElementsByName(aux);
             if(x.checked == true)
             {
                 encontrado = true;
             }
         }
         if(encontrado)
         {
             boton.disabled = false;
         }
         else
         {
             boton.disabled = true;
         }
     }
 </script>
 </head>
<body>
<form action="gestionprueba.jsp" method="POST">
//este es el codigo generado por JAVA
<DIV align="center">

<TABLE id="miTabla" cellspacing = "2" CellPadding ="3" Border = "2" With = "100%">

<TR>
<th bgcolor=White></th>
<th bgcolor=White>USUARIO</th>
<th bgcolor=White>CONTRASEÑA</th>
<th bgcolor=White>TIPO</th>

</TR>

<TR>

<TD width="20%"><input type="checkbox" id="caja1" name="caja1" onclick="activaBoton(this)"></TD>
<TD width="25%"><i>"nombre1"</i></TD>"
<TD width="25%"><i>"contrasena1"</i></TD>
<TD width="25%"><i>"tipo1"</i></TD>"
</TR>

</TABLE>
</DIV>
         <div align="center">      
             <input name ="eliminar" type="submit" value="Eliminar" disabled = "disabled">
         </div>    
     </form>
           
     </body>
 </html>

tu objetivo es verificar si el parametro del checkbox es pasado correctamente, si es correcto y estas recibiendo los parametros

solo necesitaras concentrarte en esta parte de tu codigo

Citar

     if (combo.compareTo("on") == 0)
                 {
                     usuario = consultaUsuarios.nombreUsuario(i);
                     borraUsuario.borraElUsuario(usuario);
                 }


intenta probar el if sin el metodo compareto, es decir: if(combo==0) que seria si el combo esta desmarcado

nota: la parte que dices que no entra a la funcion

veo un numero 2 en la funcion como parametro... :unsure:

espero te sea de ayuda.

saludos!!
Que es un genio???? yo superare a un genio con trabajo duro, y eso es todo.

darupi

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Llamada metodo desde boton
« Respuesta #11 en: Miércoles 12 de Agosto de 2009, 18:18 »
0
Gracias.

Si, se que he puesto un 2 fijo, que mas tarde cambiare por el numero total de usuarios mediante una consulta a la BD, pero era para probar.

Esta noche me pongo a probarlo que yo creo que hoy me he portado bastante bien ya jajaja.

Ya te contare!

Gracias por las molestias!

Thanatos-chan

  • Miembro MUY activo
  • ***
  • Mensajes: 136
  • Nacionalidad: do
    • Ver Perfil
Re: Llamada metodo desde boton
« Respuesta #12 en: Miércoles 12 de Agosto de 2009, 18:21 »
0
suerte!
Que es un genio???? yo superare a un genio con trabajo duro, y eso es todo.

darupi

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Llamada metodo desde boton
« Respuesta #13 en: Jueves 13 de Agosto de 2009, 02:01 »
0
Mmm te comento algo que he estado mirando:

1- Lo del action tienes razón, ha sido fallo mio, en todos estaba ya puesto "gestionUsuarios.jsp", lo que pasa que he copiado mal.

2- Lo de estos 3 campos es de otra cosa que funciona correctamente, pero que no habia explicado porque va bien :p
Código: Text
  1.  
  2. String campoTipo = request.getParameter("tipoNuevo");
  3. String campoNombre = request.getParameter("usuarioNuevo");
  4. String campoContraseña = request.getParameter("contraseñaNueva");
  5.  
  6.  

3- El problema es que no entiendo el porque cuando defino los checbox y les asigno el metodo botonEliminar(numeroChecks) no entra a comprobarlo. Mira que le estoy dando vueltas, pero es que no entra dentro del script si quiera.

darupi

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Llamada metodo desde boton
« Respuesta #14 en: Jueves 13 de Agosto de 2009, 02:20 »
0
Mira, he hecho un resumen de lo que quiero hacer en esta pagina:

KGD.jsp
Código: Text
  1.  
  2. <html>
  3.     <head>
  4.         <script language="javaScript" type="text/javascript">
  5.             function botonEliminar(numeroChecks)
  6.             {
  7.                 alert("Dentro");
  8.                 var x;
  9.                 boolean encontrado = false;
  10.                 var boton = document.getElementById("eliminar");
  11.                
  12.                 for(var i = 1; i <= numeroChecks && !encontrado; i++)
  13.                 {
  14.                     x = document.getElementById("caja" + i);
  15.                     if(x.checked == true)
  16.                     {
  17.                         encontrado = true;
  18.                     }
  19.                 }
  20.                 if(encontrado)
  21.                 {
  22.                     boton.disabled = false;
  23.                 }
  24.                 else
  25.                 {
  26.                     boton.disabled = true;
  27.                 }
  28.             }
  29.         </script>
  30.     </head>
  31.     <body>
  32.         <form action="KGD.jsp" method="POST">
  33.             <DIV align="center">
  34.                 <TABLE id="miTabla" cellspacing = "2" CellPadding ="3" Border = "2">
  35.                     <TR>
  36.                         <th bgcolor=White></th>
  37.                         <th bgcolor=White>USUARIO</th>
  38.                         <th bgcolor=White>CONTRASEÑA</th>
  39.                         <th bgcolor=White>TIPO</th>
  40.                     </TR>
  41.                     <TR>
  42.                         <TD width="20%"><input type="checkbox" id="caja1" name="caja1" onclick="botonEliminar(2)"></TD>
  43.                         <TD width="25%"><i>nombre1</i></TD>
  44.                         <TD width="25%"><i>contrasena1</i></TD>
  45.                         <TD width="25%"><i>tipo1</i></TD>
  46.                     </TR>
  47.                     <TR>
  48.                         <TD width="20%"><input type="checkbox" id="caja2" name="caja2"  onchange="javascript: botonEliminar(2);"></TD>
  49.                         <TD width="25%"><i>nombre2</i></TD>
  50.                         <TD width="25%"><i>contrasena2</i></TD>
  51.                         <TD width="25%"><i>tipo2</i></TD>
  52.                     </TR>
  53.                 </TABLE>
  54.             </DIV>          
  55.             <div align="center">
  56.                 <input id = "eliminar" name ="eliminar" type="submit" value="Eliminar" disabled = "disabled">
  57.             </div>
  58.         </form>
  59.     </body>
  60. </html>
  61.  
  62.  

En la asignacion del onclick pongo esto: onclick="botonEliminar(2)" porque son 2 filas (ahora lo pongo a mano para probar).
Pero seguro que si lo probais no se activa el boton de eliminar aunque le deis a cualquier checkbox :(

darupi

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Llamada metodo desde boton
« Respuesta #15 en: Jueves 13 de Agosto de 2009, 02:40 »
0
La madre que lo ......

El fallo es muy TONTO.....

El problema viene en el script.... Tengo una variable declarada como BOOLEAN. Y resulta que tanto en PHP como en JAVASCRIPT no existen tipos de variables, sino que en JAVASCRIPT son todo tipo VAR.

Cambio hecho y todo funciona como la seda.

Mil gracias por la ayuda y por las molestias!
Seguiré dando guerra :P

Gracias de nuevo!!

Thanatos-chan

  • Miembro MUY activo
  • ***
  • Mensajes: 136
  • Nacionalidad: do
    • Ver Perfil
Re: Llamada metodo desde boton
« Respuesta #16 en: Jueves 13 de Agosto de 2009, 15:12 »
0
que tal darupi,
exlente que no te has rendido.
:lol:

como te habia dicho en el otro post intenta hacer debug a la app para confirmar que estas agarrando los elementos del form y que estas entrando al ciclo de recorrido y el if para el checkbox. una vez confirmes esto te sera mas facil darle forma a lo que necesitas.


saludos!
Que es un genio???? yo superare a un genio con trabajo duro, y eso es todo.

darupi

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Llamada metodo desde boton
« Respuesta #17 en: Jueves 13 de Agosto de 2009, 15:22 »
0
La cosa es que con el Eclipse y las paginas JSP no se como se puede hace un debbug.

En una aplicación de Java de escritorio normal si que se, pero una aplicación web no tengo ni idea, por eso no los hago :p

Thanatos-chan

  • Miembro MUY activo
  • ***
  • Mensajes: 136
  • Nacionalidad: do
    • Ver Perfil
Re: Llamada metodo desde boton
« Respuesta #18 en: Jueves 13 de Agosto de 2009, 15:34 »
0
hola darupi,

para hacer el debug tienes dos opciones.

como te habia puesto en un post anterior puedes usar

out.print("el parametro del check es pasado correctamente");

de la misma manera que usaste alert para debugear el javascript.

o puedes buscar como hacer debug, aca que deje un video.

http://www.youtube.com/watch?v=fUrTpp7AfwA

suerte!
Que es un genio???? yo superare a un genio con trabajo duro, y eso es todo.

darupi

  • Miembro activo
  • **
  • Mensajes: 38
    • Ver Perfil
Re: Llamada metodo desde boton
« Respuesta #19 en: Jueves 13 de Agosto de 2009, 15:38 »
0
Gracias por las molestias!!!!!!!!!!!!!!!!!!