Ver Mensaje Individual
  #4 (permalink)  
Antiguo 29/11/2009, 14:58
Avatar de zerokilled
zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 16 años
Puntos: 1485
Respuesta: Echadme una manita...

Cita:
No sé si he entendido bien, pero creo que me estás diciendo que lo ponga así:
Código:
<div ...>
while ($row= mysql_fetch_assoc($consulta)){
...
<input type="checkbox" ...>
...
}
</div>
es correcto, asi es como debe quedar.

Cita:
(esto no lo veo... el onclick afectaría practicamente a toda la pagina, y solo queremos sobre los checkbox)
no necesariamente a toda la pagina pero si a todo lo que esta contenido dentro del DIV. en todo caso, tambien se puede determinar donde se hizo click, de esa forma la funcion procede solo si fue "cliqueado" sobre un checkbox. esta vez necesitamos un tercer parametro para el objeto evento.
Código:
function enableDisable(collection, control, evt){
var evt = evt || event, elem = evt.target || evt.srcElement; // DOM or IE;
if(!(/^input$/i.test(elem.nodeName))) return; // si el elemento no es un INPUT abandonamos la funcion;
for(var i = 0; collection[i]; i++) if(collection[i].checked){
control.disabled = false;
return;
}
control.disabled = true;
}
al invocar la funcion, el tercer parametro literalmente tiene que ser event. algunos pensaran que dara error en todos los navegadores con excepcion de iexplorer. lo cierto es que no produce error debido al modelo de evento en los navegadores que soportan el modelo estandar. de todos modos, si produce problema la otra alternativa es arguments[0].

Cita:
Igual es una burrada, pero es posible meterlo dentro del loop poniendole id al div?
no me hace sentido el tener un DIV para cada INPUT. no se de que forma lo estes pensando, pero el ID tambien se lo puedes dar al INPUT por lo que no es explicitamente necesario crear un DIV para cada INPUT. aun asi, creo que estarias volviendo a la misma metodologia que inicialmente te planteabas, asignar el evento por cada elemento. si quieres hacerlo asi, pues no hay problema pero la forma de invocar la funcion es un tanto diferente.

la forma que te estoy planteando evita tener que crear multiples eventos para una cantidad de elementos que comparten una similitud, y al mismo tiempo le saco ventaja a las habilidades del DOM. el resultado es, menos codigo y mas facil de depurar.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.