Mi problema es el siguiente:
Tengo un sistema que realiza varias acciones tipo excel, es una tabla con varias columnas y algunas de ellas pueden ser filtradas para mostrar solo lo que se quiere. Todo el proceso del filtrado se realiza con javascript. Los datos totales vienen de una base de datos.
Ahora mi problema es el siguiente, una columna posee Un boton de accion, (dinamico por la cantidad de filas traidas de la base de datos, le asigno como valor un id). Una opcion del sistema seria marcar Automaticamente todos los checks que sean visibles (por si acaso hay un filtro activo). Lo de marcarlos todos no fue problema, ahora el problema se presento, fue cuando se me solicito que la accion de marcar todos los checks de las filas visibles funcionara solo si el valor de un campo de una columna sea uno solo. (explico esto por si acaso, como si fuera excel).
*** Teniendo una tabla con valores se realizara un filtrado para que todos los valores de la columna D sean iguales ***
EL FILTRO LO QUE HACE ES COLOCAR VISIBLE O NO LAS FILAS.
Pongo el codigo de la funcion:
Código:
Del codigo explico: <script language="javascript"> function validar_marcar_all(cantidad_asignados) { var x for(x=0;x<=cantidad_asignados;x++){ var fila_actual_x = 'celda_'+x if (document.getElementById(fila_actual_x).style.display==""){ var campo_rubro = 'campo_rubro_'+x; var valor_rubro = document.getElementById(campo_rubro).value; break; } } var y for(y=0;y<=cantidad_asignados;y++){ var fila_actual_y = 'celda_'+y; var campo_rubro_y = 'campo_rubro_'+y; var valor_campo_rubro = document.getElementById(campo_rubro_y).value; if (document.getElementById(fila_actual_y).style.display=="" && valor_campo_rubro!=valor_rubro){ alert("Existen rubros distintos, por favor aplique un filtro antes del marcado masivo."); break; } } alert(valor_rubro); } </script>
* El primer for: desde 0 hasta la cantidad de filas totales que viene de la base de datos.
* la variable fila_actual_x la utilizo para guardar alli el id de la fila (dinamico).
Que luego utilizo para preguntar si la fila actual que esta verificando el for es o no visible (por si acaso se aplico un filtro).
** Esto lo hago para obtener el primer valor de la celda requerida correspondiente a la primera fila que se encuentre visible (un solo valor).
* El segundo for hace el mismo recorrido completo igual que el anterior. Solo que pregunta si el valor de la celda actual que sea visible es igual al valor obtenido en el for anterior.
Asi comparo todo para ver si toda esa columna tiene un solo valor o posee valores distintos.
Hice toda esta explicacion para ver si alguien sabe una forma diferente o mas facil. Por que el error o lo que no funciona es que la funcion no se ejecuta toda. El alert(valor_rubro); nunca se ejecuta.
Por que no se ejecuta ese alert??, alli deberia ir el llamado a la funcion que haria el marcado de todos los checks. (claro preguntando si nunca entro en el error, etc. pero esa parte la he quitado). Espero que alguien pueda ayudarme.
Ah y gracias de antemano.