Foros del Web » Programando para Internet » Javascript »

tag form y checkbox

Estas en el tema de tag form y checkbox en el foro de Javascript en Foros del Web. probando si logro postear....ufff por fin logre postear no se que sucedio... Amigos: He tenido un porblemon, tengo un form1 el cual tiene checkbox para ...
  #1 (permalink)  
Antiguo 29/11/2005, 08:44
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 19 años, 7 meses
Puntos: 1
tag form y checkbox

probando si logro postear....ufff por fin logre postear no se que sucedio...
Amigos:

He tenido un porblemon, tengo un form1 el cual tiene checkbox para realizar la típica funcion marcar todos. hasta ahí bien, pero en esa misma página debo y coloco otro form2 y apenas hago eso la función que marca todas las check del form1 deja de funcionar, como sou novato en este tema, sera que hay que crear una función distinta para cada form, agruparlos en grupo, por ejemplo check clientes, check adm
  #2 (permalink)  
Antiguo 29/11/2005, 09:06
Avatar de Saruman  
Fecha de Ingreso: mayo-2003
Ubicación: Panama city, Panama, Panama
Mensajes: 1.154
Antigüedad: 21 años, 6 meses
Puntos: 5
si, la verdad no c que haces que tus post's salen "dañados"
bueno, regresando al tema... prueba con esto...

http://www.forosdelweb.com/showpost....&postcount=226

alli solamente modificas la funcion y le envias el parametro "f", que seria el nombre del form y listo.

function validar_checkbox(f)

y en cada form pones asi:

Código HTML:
<form name="form1" onsubmit="return validar_checkbox(this)">
<!-- algunos checkbox-->
</form>
 
<form name="form2" onsubmit="return validar_checkbox(this)">
<!-- otros checkbox-->
</form> 
oh, se me olvidaba... tambien el nombre del objeto, o sea, el nombre de los checkbox.... manejalo con un solo nombre para cada form y asi lo trabajas como esta en la funcion (como un arreglo).

espero te sirva
__________________
Saruman

One Ring to rule them all, One Ring to find them, One Ring to bring them all and in the darkness bind them.
  #3 (permalink)  
Antiguo 29/11/2005, 09:43
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 19 años, 7 meses
Puntos: 1
´bueno vamos avanzando.... el tema es que de esta manera yo marco o desmarco todos los chek que hayan

Código HTML:
<script>
function validar_checkbox(f) { 
var total = form2["check[]"].length; 
var selected = false; 

if (total != null) { 
for (i=0; i<total; i++) { 
    if (form2["check[]"][i].checked == true) { 
     selected = true; 
     break; 
    } 
} 
} else { 
if (form2["check[]"].checked == true) { 
    selected = true; 
} 
} 

if (selected == false) { 
alert("Debe seleccionar al menos una opción."); 
return false 
} 
} 
/////
function putOn() { 
	for (i = 0; i < document.forms[0].elements.length; i++)
	{ 
		document.forms[0].elements[i].checked = true; 
	} 
	
} 

function putOff() { 
	for (i = 0; i < document.forms[0].elements.length; i++) 
	{ 
		document.forms[0].elements[i].checked = false; 
	} 
} 
</script> 
<form name="form2" method="post" action="../BORRA/delete.php">
 <input type="checkbox" name="checkbox" value="checkbox" onClick="if (this.checked) {putOn()} else {putOff()}"> 
y ahora acabo de colocar el nuevo form algo como
Código HTML:
<form name="form3"> 
y nuevamente si bien esta validando que no hayan vacios no hace que se marquen todos
  #4 (permalink)  
Antiguo 29/11/2005, 10:13
Avatar de Saruman  
Fecha de Ingreso: mayo-2003
Ubicación: Panama city, Panama, Panama
Mensajes: 1.154
Antigüedad: 21 años, 6 meses
Puntos: 5
ok, ya lo hice y me dices si te sirve asi:

Código PHP:
<script language="javascript"
 function 
validar_checkbox(fobj) {
  
= eval("document." f);
  
obj = eval("f." obj);
  var 
total obj.length;
  var 
selected false
  
  if (
total != null) { 
   for (
i=0i<totali++) { 
    if (
obj[i].checked == true) { 
     
obj[i].checked false;
    } else {
     
obj[i].checked true;
    }
   } 
  } else { 
   if (
obj.checked == true) { 
    
obj.checked false;
   } else {
    
obj.checked true;
   }
  } 
  
 } 
</script> 

Código HTML:
<form name="form1" method="post">
<input type="checkbox" name="mycheckbox" value="1"><br>
<input type="checkbox" name="mycheckbox" value="1"><br>
<input type="checkbox" name="mycheckbox" value="1"><br>
<input type="checkbox" name="mycheckbox" value="1"><br>
<input type="checkbox" name="mycheckbox" value="1"><br><br>
<input type="checkbox" name="seltotods1" value="1" onClick="validar_checkbox('form1', 'mycheckbox')">Seleccionar Todos
</form>
<form name="form2" method="post">
<input type="checkbox" name="mycheckbox" value="1"><br>
<input type="checkbox" name="mycheckbox" value="1"><br>
<input type="checkbox" name="mycheckbox" value="1"><br>
<input type="checkbox" name="mycheckbox" value="1"><br>
<input type="checkbox" name="mycheckbox" value="1"><br><br>
<input type="checkbox" name="seltotods1" value="1" onClick="validar_checkbox('form2', 'mycheckbox')">Seleccionar Todos
</form> 
saludos
__________________
Saruman

One Ring to rule them all, One Ring to find them, One Ring to bring them all and in the darkness bind them.
  #5 (permalink)  
Antiguo 29/11/2005, 10:48
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 19 años, 7 meses
Puntos: 1
UUfff amigo Saruman, lo chequeré ... ahorita me tengo que hacer unos query para otras consulta ... no mercy en el laburo,.. te estoy avisando pero desde ya te agradezo inmensamente...
  #6 (permalink)  
Antiguo 30/11/2005, 16:17
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 19 años, 7 meses
Puntos: 1
Acabo de probar la solución Saruman y funciona de maravilla, aunque ahora necesitare hacer que exista al menos una seleccionada, estuve haciendo algunas pruebas pero no lo logre, por eso mismo acudo a tu ayuda nuevamente.

mira para el tema de las checkbox, lo manejo de esta manera, primero esta la chek que me permite marcar y desmarcar todas.
Código HTML:
<input type="checkbox" name="todos" value="1" onClick="validar_checkbox('form2', 'grupocheck[]')"> 
y el resto de check se iran creando a medida que se vayan agregando datos y siguen esta forma
Código HTML:
 <input type="checkbox" name="grupocheck[]" value="<?=$resultados[idfile]?>"> 
haber si puedes darme un aventón agradecido
  #7 (permalink)  
Antiguo 01/12/2005, 07:43
Avatar de Saruman  
Fecha de Ingreso: mayo-2003
Ubicación: Panama city, Panama, Panama
Mensajes: 1.154
Antigüedad: 21 años, 6 meses
Puntos: 5
bueno, ahora usa la funcion que te puse en el segundo post....
saludos
__________________
Saruman

One Ring to rule them all, One Ring to find them, One Ring to bring them all and in the darkness bind them.
  #8 (permalink)  
Antiguo 02/12/2005, 10:20
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 19 años, 7 meses
Puntos: 1
Saruman sabes el problema que se me presento, es que se me habia ido un detalle al momento de colocar el código de esta manera grupocheck[].
Código HTML:
<input type="checkbox" name="grupocheck[]" value="<?=$resultados[idfile]?>"> 
La función JS no funciona y lanza un error de:lenght es nulo o no es un objeto en esta linea: var total = obj.length;

he probado de varias formas metiendome mas en JS pero todavía no logro dar con la solución ¡
  #9 (permalink)  
Antiguo 02/12/2005, 10:38
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 19 años, 7 meses
Puntos: 1
Saruman tengo unos problem ahora no funciona porque. al tener el nombre de las checkbox como:name="grupocheck[]"

al llegar a esta seccion del JS: var total = obj.length; me lanza el error Lenght es nulo o no es un objeto y ya no me marca nada he probado hartas cosas pero aún sin exito
  #10 (permalink)  
Antiguo 02/12/2005, 13:35
Avatar de Saruman  
Fecha de Ingreso: mayo-2003
Ubicación: Panama city, Panama, Panama
Mensajes: 1.154
Antigüedad: 21 años, 6 meses
Puntos: 5
Cita:
Iniciado por under_ground
Saruman tengo unos problem ahora no funciona porque. al tener el nombre de las checkbox como:name="grupocheck[]"

al llegar a esta seccion del JS: var total = obj.length; me lanza el error Lenght es nulo o no es un objeto y ya no me marca nada he probado hartas cosas pero aún sin exito
ese error es porque solamente existe un solo checkbox..... cuando hay mas de dos entonces el obj.length te devuelve cero o uno, o mas..... captas?

por eso en la funcion del segundo post tengo esto:

if (total == null) {

q quedaria mejor asi:

if (total) {
//existe mas de un checkbox
} else {
//solo hay un checkbox y no puedes usar checkbox[posicion] porque solo hay uno....

saludos
}
__________________
Saruman

One Ring to rule them all, One Ring to find them, One Ring to bring them all and in the darkness bind them.
  #11 (permalink)  
Antiguo 02/12/2005, 17:36
 
Fecha de Ingreso: abril-2005
Mensajes: 491
Antigüedad: 19 años, 7 meses
Puntos: 1
UUff amigo esto salio porfiado, mira hice los cambios pero segui con el mismo error, he ido probando sobre el código que me enviaste un par de post más arriba.

Código HTML:
<script language="javascript"> 
function validar_checkbox(f, obj) {
  f = eval("document." + f);
  obj = eval("f." + obj);
  var total = obj.length;
  var selected = false; 
  
  if (total)
  { 
   	for (i=0; i<total; i++)
	{ 
    	if (obj[i].checked == true) { 
     		obj[i].checked = false;
		} else {
    		obj[i].checked = true;
   		}
    } 
  } else { 
   if (obj.checked == true)
   { 
   		obj.checked = false;
   } else {
    	obj.checked = true;
   }
  } 
  
} 
</script> 
He dejado tal cual el script para que lo cheques, acá esta el form el cual he hecho los cambios
Código HTML:
<form name="form1" method="post">
<input type="checkbox" name="mycheckbox[]" value="1"><br>
<input type="checkbox" name="mycheckbox[]" value="1"><br>
<input type="checkbox" name="mycheckbox[]" value="1"><br>
<input type="checkbox" name="mycheckbox[]" value="1"><br>
<input type="checkbox" name="mycheckbox[]" value="1"><br><br>
<input type="checkbox" name="seltotods1" value="1" onClick="validar_checkbox('form1', 'mycheckbox[]')">Seleccionar Todos
</form> 
y no esta marcando , después de esto cuando tenga más tiempo me comere un manual de JS
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 18:34.