Foros del Web » Programando para Internet » Javascript » Frameworks JS »

contar celdas "toggleadas" de una tabla

Estas en el tema de contar celdas "toggleadas" de una tabla en el foro de Frameworks JS en Foros del Web. Antes que nada, muchas gracias por tomarse el tiempo para leer mi post. El punto es el siguiente: Tengo una tabla html con dos renglones ...
  #1 (permalink)  
Antiguo 06/05/2011, 15:13
 
Fecha de Ingreso: mayo-2008
Mensajes: 38
Antigüedad: 16 años, 6 meses
Puntos: 0
Pregunta contar celdas "toggleadas" de una tabla

Antes que nada, muchas gracias por tomarse el tiempo para leer mi post. El punto es el siguiente:

Tengo una tabla html con dos renglones y seis celdas cada renglón. He aplicado la función toggleClass y al enviar la forma (submit), necesito saber cuántas de esas celdas han sido "toggleadas" para, de esta manera, devolverle al usuario el número.

Alguien sabe cómo puedo hacerlo?

Agradezco de antemanos sus respuestas

Fragmento de código

Código:
            
<!-- Tabla de meses toggled -->
   <div id="meses"  class="meses">
    <table cellspacing="0" border="1" >
   <tr>
  <td class="color" valign="middle" align="left" id="mes01">Enero
     </td>
Saludos

U.
  #2 (permalink)  
Antiguo 06/05/2011, 15:37
(Desactivado)
 
Fecha de Ingreso: abril-2011
Mensajes: 153
Antigüedad: 13 años, 6 meses
Puntos: 236
Respuesta: contar celdas "toggleadas" de una tabla

Hola!,
no entiendo muy bien a que te refieres con togglearlas explica de otra manera porfavor y pon todo el codigo que estas usando para eso, saludos!
  #3 (permalink)  
Antiguo 06/05/2011, 16:41
 
Fecha de Ingreso: mayo-2008
Mensajes: 38
Antigüedad: 16 años, 6 meses
Puntos: 0
Exclamación Respuesta: contar celdas "toggleadas" de una tabla

Antes que nada, gracias por tu atención e interés. Explico:

Tengo el estilo:

Código:
        <style type="text/css">
            .fondotd{ background-color: #0000ff;}
        </style>

La tabla:
Código:
            <div id="meses"  class="meses">
                <table cellspacing="0" border="1" >
                    <tr>
                        <td class="color" valign="middle" align="left" id="mes01">Enero
                        </td>
                        <td bgcolor="#f0f0f0" valign="middle" align="left">
                            <input type="text" name="anio" value="11" size="2" maxlength="2" onblur="validaYear(this)" id="yearMes01" />
                        </td>
                        <td class="color" valign="middle" align="left" id="mes02">
                            Febrero
                        </td> ...
El toggle:
Código:
        $(document).ready(function(){
            $("td.color").live('click', function(){
                $(this).toggleClass("fondotd");
                });

           });
El usuario puede hacer toggle las veces que quiera. Al final se muestran la cantidad de meses "toggleados" (coloreados). Por ejemplo, el usuario hace clic en el td Enero, Marzo y Diciembre. En una variable tengo que capturar el número de meses: 3

Gracias de antemano por tu atención y ayuda

Saludos

U.
  #4 (permalink)  
Antiguo 06/05/2011, 20:36
(Desactivado)
 
Fecha de Ingreso: abril-2011
Mensajes: 153
Antigüedad: 13 años, 6 meses
Puntos: 236
Respuesta: contar celdas "toggleadas" de una tabla

Hola!, justamente estaba repasando las clases en javascript y con tu problema hize una clase especialmente para lo que necesistas.

Primero agrega éste script:
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. var meses=new Array("Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre");
  3. var selecciones={ mes01:"no",
  4.                   mes02:"no",
  5.                   mes03:"no",
  6.                   mes04:"no",
  7.                   mes05:"no",
  8.                   mes06:"no",
  9.                   mes07:"no",
  10.                   mes08:"no",
  11.                   mes09:"no",
  12.                   mes10:"no",
  13.                   mes11:"no",
  14.                   mes12:"no",
  15.                   cantidad:0,
  16.                   cadena:"",
  17.                   coleccion:"",
  18.                   anclarMes:function(m){
  19.                    n=parseInt(m.replace(/mes0?/i,""))-1;
  20.                    s=selecciones;
  21.                    m=meses[n];
  22.                    s.cadena+=(s.cadena=="")?m:","+m;
  23.                    s.coleccion=s.cadena.split(",");
  24.                   },
  25.                   desanclarMes:function(m){
  26.                    n=parseInt(m.replace(/mes0?/i,""))-1;
  27.                    s=selecciones;
  28.                    m=meses[n];
  29.                    s.cadena=s.cadena.replace(new RegExp("(^("+m+"),?|(,"+m+"))","i"),"");
  30.                    s.coleccion=s.cadena.split(",");
  31.                   } };
  32. function guardarSelecciones(This){
  33.    with(This){
  34.      if(attr("class")=="color fondotd"){
  35.        selecciones[attr("id")]="si";
  36.        selecciones.anclarMes(attr("id"));
  37.        selecciones.cantidad++;}
  38.      else{
  39.        selecciones[attr("id")]="no";
  40.        selecciones.desanclarMes(attr("id"));
  41.        selecciones.cantidad--;}
  42.    }
  43. }
  44. </script>

Ahora cambia:
Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.             $("td.color").live('click', function(){
  3.                 $(this).toggleClass("fondotd");
  4.                 });
  5.  
  6.            });

Por:
Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.             $("td.color").live('click', function(){
  3.                 $(this).toggleClass("fondotd");
  4.                  guardarSelecciones($(this));
  5.                 });
  6.            });
Prácticamente es agregar la función guardarSelecciones($(this)); dentro de la función del evento click

Listo!!! Ahora te explico como obtener la cantidad de los meses seleccionados y más.
  • Propiedad selecciones.cantidad - devuelve el número de meses seleccionados.
  • Propiedad selecciones.cadena - devuelve los nombres de los meses seleccionados en un sólo string(No se ordenan).
  • Colección(Array) selecciones.coleccion[Número] - los meses seleccionados son almacenados aquí(No se ordenan).
  • Propiedades mes01, mes02...(hasta el mes12) - devuelve "si" cuando el mes fué seleccionado y "no" cuando no fué seleccionado(Ordenados por mes: enero, febrero, marzo, etc.)

Espero que sea de tu agrado.
Lee bien para que no vallas a copiar algo mal, ya que el código funciona perfectamente!, Saludos!

Última edición por angelfcm; 07/05/2011 a las 09:42
  #5 (permalink)  
Antiguo 09/05/2011, 07:56
 
Fecha de Ingreso: mayo-2008
Mensajes: 38
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: contar celdas "toggleadas" de una tabla

Angelfcm:

Muchas gracias por el apoyo. En este momento lo implemento y te cuento cómo me fue. Sin embargo te agradezco de antemano por el auxilio

Saludos
Ulises
  #6 (permalink)  
Antiguo 09/05/2011, 18:59
(Desactivado)
 
Fecha de Ingreso: abril-2011
Mensajes: 153
Antigüedad: 13 años, 6 meses
Puntos: 236
Respuesta: contar celdas "toggleadas" de una tabla

Ok, avisame si pasa cualquier inconveniente, saludos!
  #7 (permalink)  
Antiguo 10/05/2011, 08:03
 
Fecha de Ingreso: mayo-2008
Mensajes: 38
Antigüedad: 16 años, 6 meses
Puntos: 0
Respuesta: contar celdas "toggleadas" de una tabla

Angel:

Te quedó genial! Muchas gracias por el apoyo. Ya lo implementé y está funcionando. Aunque a la hora de pasar los resultados al grid, se sigue incrementando el contador. Pero vaya! ese es un problema menor que veré cómo resolver.

En sí el script es genial
Muchas gracias
U.



Etiquetas: jquery, tabla, toggle, toggleclass
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 12:19.