Ver Mensaje Individual
  #4 (permalink)  
Antiguo 06/05/2011, 20:36
angelfcm
(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