Programación Web y Scripting > JavaScript

 Llamada metodo desde boton

(1/4) > >>

darupi:
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 --- "<TD width="20%"><input type="checkbox" id="caja" + i + "" onClick="checks(" + numeroUsuarios + ")"></TD>";  
Y el codigo del Script
Código:

--- Código: Text --- <script language="javaScript" type="text/javascript">    function checks(numeroChecks)    {        boolean algunoActivo = false;        var boton = document.getElementById("eliminar");         var x;        for(i = 1; i <= numeroChecks && !algunoActivo; i++)        {            x = document.getElementById("caja" + i);            if(x.checked=true)            {                algunoActivo = true;               }        }        if(algunoActivo)        {            boton.disabled = false;        }        else        {            boton.disabled = true;        }    }</script>  
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:
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

--- Fin de la cita ---

saludos!

darupi:
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 --- <script language="javaScript" type="text/javascript">    function activaBoton(c)    {        document.getElementById("eliminar").disabled = !c.checked;    }</script>  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:
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!

darupi:
Jejeje, ok!!

Mira, desde JSP llamo a esta función:

--- Código: Text --- <form action="gestionUsuarios.jsp" method="POST">        <%            out.print(creaTablaUsuarios.creaTabla());        %>        <div align="center">                    <input name ="eliminar" type="submit" value="Eliminar" disabled = "disabled">        </div>          </form>  
Y desde aqui es donde se crea la tabla dinamicamente:

--- Código: Text --- package grupo10; import java.sql.Connection;import java.sql.DriverManager;import java.sql.ResultSet;import java.sql.Statement; public class creaTablaUsuarios{    public static String creaTabla()    {        String solucion = "";                try        {            Class.forName("com.mysql.jdbc.Driver").newInstance();            Connection conn = DriverManager.getConnection("jdbc:mysql://localhost/pepe?user=root&password=");            Statement Estamento = conn.createStatement();                   ResultSet rs = Estamento.executeQuery("select * from usuario order by nombre");                                    //Per a crear la taula            solucion = "<DIV align="center">";                            solucion = solucion  + "<TABLE id="miTabla" cellspacing = "2" CellPadding = "3" Border = "2" With = "100%">";            solucion = solucion  + "<TR>";                      solucion = solucion  + "<th bgcolor=White></th>";            solucion = solucion  + "<th bgcolor=White>USUARIO</th>";            solucion = solucion  + "<th bgcolor=White>CONTRASEÑA</th>";            solucion = solucion  + "<th bgcolor=White>TIPO</th>";                                                solucion = solucion  + "</TR>";                                    int i = 1;            //Ciclo de lectura del resultset            while(rs.next())            {                solucion = solucion  + "<TR>";                solucion = solucion  + "<TD width="20%"><input type="checkbox" id="caja" + i + "" name="caja" + i + "" onclick="activaBoton(this)"></TD>";                solucion = solucion  + "<TD width="25%"><i>" + rs.getString("nombre") + "</i></TD>";                solucion = solucion  + "<TD width="25%"><i>" + rs.getString("contraseña") + "</i></TD>";                solucion = solucion  + "<TD width="25%"><i>" + rs.getString("tipo") + "</i></TD>";                solucion = solucion  + "</TR>";                i++;            }            solucion = solucion  + "</TABLE>";            solucion = solucion  + "</DIV>";            //Cerrando resultset            rs.close();            Estamento.close();            conn.close();        }        catch (Exception e)        {            e.printStackTrace();        }        return solucion;    }}  
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!!

Navegación

[0] Índice de Mensajes

[#] Página Siguiente

Ir a la versión completa