Foros del Web » Programando para Internet » Javascript »

Desabilitar submit sino hay ningun checkbox seleccionado

Estas en el tema de Desabilitar submit sino hay ningun checkbox seleccionado en el foro de Javascript en Foros del Web. Hola amigos tengo pocos conocimientos de javascript y me gustaria saber como puedo hacer para que si hago click en cualquiera de estos checkbox el ...
  #1 (permalink)  
Antiguo 23/11/2004, 13:49
 
Fecha de Ingreso: septiembre-2004
Mensajes: 41
Antigüedad: 19 años, 7 meses
Puntos: 0
Desabilitar submit sino hay ningun checkbox seleccionado

Hola amigos tengo pocos conocimientos de javascript y me gustaria saber como puedo hacer para que si hago click en cualquiera de estos checkbox el boton submit se active si no hay ningun checkbox seleccionado se desactive el submit:

<form name="formul" action="loquesea.php">
<input type="checkbox" id="1" name="fichier0" value="11">
<input type="checkbox" id="1" name="fichier1" value="algo">
<input type="checkbox" id="1" name="fichier2" value="fotos">
<input type="submit" name="action" value="Enviar">

</form>

de antemeno muchas gracias por su ayuda
  #2 (permalink)  
Antiguo 23/11/2004, 14:02
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Te sirve esto?
Código HTML:
<script>
function pepe(){
f=document.forms['formul'];
f.elements['action'].disabled=true;
for(a=0;a<f.elements.length;a++){
if(f.elements[a].type=="checkbox" && f.elements[a].checked==true){
f.elements['action'].disabled=false;
break;

}
}

}
</script>
<form name="formul" action="loquesea.php">

<input type="checkbox" id="1" name="fichier0" value="11" onclick="pepe()" />
<input type="checkbox" id="2" name="fichier1" value="algo" onclick="pepe()" />
<input type="checkbox" id="3" name="fichier2" value="fotos" onclick="pepe()" />
<input type="submit" name="action" disabled="disabled" value="Enviar" />

</form> 
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #3 (permalink)  
Antiguo 23/11/2004, 14:14
 
Fecha de Ingreso: septiembre-2004
Mensajes: 41
Antigüedad: 19 años, 7 meses
Puntos: 0
eres un genio, esta muy bien, gracias KarlanKas, sin embargo como puedo modificarlo para que me funcione con mas botones submit

<form name="formul" action="loquesea.php">

<input type="checkbox" id="1" name="fichier0" value="11" onclick="pepe()" />
<input type="checkbox" id="2" name="fichier1" value="algo" onclick="pepe()" />
<input type="checkbox" id="3" name="fichier2" value="fotos" onclick="pepe()" />
<input type="submit" name="action" disabled="disabled" value="Enviar" />
<input type="submit" name="action" disabled="disabled" value="Guardar" />
<input type="submit" name="action" disabled="disabled" value="Eliminar" />
</form>
  #4 (permalink)  
Antiguo 23/11/2004, 14:47
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Pon un nombre distinto a cada submit:

<input type="submit" name="enviar" disabled="disabled" value="Enviar" />
<input type="submit" name="guardar" disabled="disabled" value="Guardar" />
<input type="submit" name="eliminar" disabled="disabled" value="Eliminar" />

Y cambia la función así:

function pepe(){
f=document.forms['formul'];
f.elements['enviar'].disabled=true;
f.elements['guardar'].disabled=true;
f.elements['eliminar'].disabled=true;

for(a=0;a<f.elements.length;a++){
if(f.elements[a].type=="checkbox" && f.elements[a].checked==true){
f.elements['enviar'].disabled=false;
f.elements['guardar'].disabled=false;
f.elements['eliminar'].disabled=false;
break;

}
}

}

Lo que no entiendo es para qué quieres más de un submit salvo que pongas algo así:

<input type="submit" name="enviar" onclick="this.form.action='destino1.php'" disabled="disabled" value="Enviar" />
<input type="submit" name="guardar" onclick="this.form.action='destino2.php'" disabled="disabled" value="Guardar" />
<input type="submit" name="eliminar" onclick="this.form.action='destino3.php'" disabled="disabled" value="Eliminar" />

De esta forma cambias el destino del formulario con cada botón...
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #5 (permalink)  
Antiguo 23/11/2004, 15:55
 
Fecha de Ingreso: septiembre-2004
Mensajes: 41
Antigüedad: 19 años, 7 meses
Puntos: 0
Uso el mismo nombre action porque todo lo que se marque en los checkbox de mi formul lo recibo en mi archivo loquesea.php en ese archivo loquesea.php capturo que boton presionaron por medio de la variable $action , por eso tengo tres submit y una sola pagina a la que envio datos post, por decir si presionan en guardar, guardo los datos, si presionan en eliminar, elimino.

El asunto es que ahora todo funciona como me indicastes con el onclick="pepe()" pero el asunto es que mis checkbox se generan dinamicamente pueden ser muchos como pueden ser unos pocos de acuerdo a la opcion que elija el usuario y para hacer mas facil la seleccion encontre un script que me permite seleccionar todos los checkbox, el problema es que cuando seleciono todos los checkbox utilizando dicho script los botones no se habilitan, solo se habilitan cuando le hago clic a cada uno, esto es lo que tengo:
Código HTML:
<script>
<!--
id = "valor";
function check_boxes(id, verdadero_falso) {
for (i = 0; i < document.formul.elements.length; i++) {
if (document.formul.elements[i].id == id)
document.formul.elements[i].checked = verdadero_falso;
};
}
-->
</script>
<script>
function pepe(){
f=document.forms['formul'];
f.elements['enviar'].disabled=true;
f.elements['guardar'].disabled=true;
f.elements['eliminar'].disabled=true;

for(a=0;a<f.elements.length;a++){
if(f.elements[a].type=="checkbox" && f.elements[a].checked==true){
f.elements['enviar'].disabled=false;
f.elements['guardar'].disabled=false;
f.elements['eliminar'].disabled=false;
break;
}
}
}
</script>
<a href="#" onclick="check_boxes('1', true)">todos</a>|<a href="#" onclick="check_boxes('1', false)">ninguno</a><br>
<form name="formul" action="loquesea.php">
<input type="checkbox" id="1" name="fichier0" value="11" onclick="pepe()" /><br>
<input type="checkbox" id="1" name="fichier1" value="algo" onclick="pepe()" /><br>
<input type="checkbox" id="1" name="fichier2" value="fotos" onclick="pepe()" /><br>
<input type="checkbox" id="1" name="fichier3" value="mariscos" onclick="pepe()" /><br>
<input class="btn" type="submit" id="enviar" name="action" value="enviar>" disabled="disabled" />
<input class="btn" type="submit" id="guardar" name="action"  value="guardar" disabled="disabled" />
<input class="btn" type="submit" id="eliminar" name="action"  value="eliminar" disabled="disabled" />
</form> 
  #6 (permalink)  
Antiguo 23/11/2004, 16:06
 
Fecha de Ingreso: septiembre-2004
Mensajes: 41
Antigüedad: 19 años, 7 meses
Puntos: 0
Muchas Gracias ya lo resolvi solo modifique esta linea y me funciona todo de maravillas
Código HTML:
<a href="#" onclick="check_boxes('1', true),pepe()">todos</a>|<a href="#" onclick="check_boxes('1', false),pepe()">ninguno</a><br> 
Gracias por ayudarme a resolver este pequeño problema.
  #7 (permalink)  
Antiguo 23/11/2004, 16:41
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Prueba esto en vez de tu código:

Código HTML:
<script>

function pepe(valor){
	f=document.forms['formul'];
	valor2=true;
	todos=0;
	todos2=0;

	for(a=0;a<f.elements.length;a++){
		if(f.elements[a].type=="checkbox"){
			todos+=1;
			if(valor!=undefined){
				f.elements[a].checked=valor;
				valor2=(valor)?false:true;

			}
			else{
				if(f.elements[a].checked==true){
					todos2+=1
					valor2=false;
				}
			}
		}
	}
	f.elements['enviar'].disabled=valor2;
	f.elements['guardar'].disabled=valor2;
	f.elements['eliminar'].disabled=valor2;
}
</script>

<form name="formul" action="loquesea.php">
<input type="checkbox" id="0" name="seleccion" value="" onclick="pepe(this.checked)" />Marcar Todas<br>
<input type="checkbox" id="1" name="fichier0" value="11" onclick="pepe()" /><br>
<input type="checkbox" id="1" name="fichier1" value="algo" onclick="pepe()" /><br>
<input type="checkbox" id="1" name="fichier2" value="fotos" onclick="pepe()" /><br>
<input type="checkbox" id="1" name="fichier3" value="mariscos" onclick="pepe()" /><br>
<input class="btn" type="submit" id="enviar" name="action" value="enviar>" disabled="disabled" />
<input class="btn" type="submit" id="guardar" name="action"  value="guardar" disabled="disabled" />
<input class="btn" type="submit" id="eliminar" name="action"  value="eliminar" disabled="disabled" />
</form> 
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #8 (permalink)  
Antiguo 23/11/2004, 17:53
 
Fecha de Ingreso: septiembre-2004
Mensajes: 41
Antigüedad: 19 años, 7 meses
Puntos: 0
Muy Bonito y mas facil tu codigo, solo que a mi no me sirve seleccionar todos con un chekbox por estetica sino con un vinculo
Código HTML:
<a href="#" id="0" name="seleccion" onclick="pepe(this.checked)">todos</a> 
Probe esto pero no me funcioono con tu codigo, si hay forma de que mejor funcione con un vinculo el seleccionar todos los checkbox seria genial, de antemano muchas gracias
  #9 (permalink)  
Antiguo 23/11/2004, 17:58
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Cambia lo que citas por esto:
Código HTML:
<a href="#" onclick="pepe(true)">todos</a>|<a href="#" onclick="pepe(false)">ninguno</a><br><br> 
Lo demás déjalo igual.
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #10 (permalink)  
Antiguo 23/11/2004, 19:08
 
Fecha de Ingreso: septiembre-2004
Mensajes: 41
Antigüedad: 19 años, 7 meses
Puntos: 0
Exelente ahora si todo marcha sobre ruedas Gracias
  #11 (permalink)  
Antiguo 24/11/2004, 02:20
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Me acabo de dar cuenta de que he dejado 2 variables que no son necesarias. son todos y todos2. Habría que quitarlos dejándolo así:
Código HTML:
<script>

function pepe(valor){
	f=document.forms['formul'];
	valor2=true;
	
	for(a=0;a<f.elements.length;a++){
		if(f.elements[a].type=="checkbox"){
			
			if(valor!=undefined){
				f.elements[a].checked=valor;
				valor2=(valor)?false:true;

			}
			else{
				if(f.elements[a].checked==true){
					valor2=false;
				}
			}
		}
	}
	f.elements['enviar'].disabled=valor2;
	f.elements['guardar'].disabled=valor2;
	f.elements['eliminar'].disabled=valor2;
}
</script>

<form name="formul" action="loquesea.php">
<a href="#" onclick="pepe(true)">todos</a>|<a href="#" onclick="pepe(false)">ninguno</a><br><br>
<input type="checkbox" id="1" name="fichier0" value="11" onclick="pepe()" /><br>
<input type="checkbox" id="2" name="fichier1" value="algo" onclick="pepe()" /><br>
<input type="checkbox" id="3" name="fichier2" value="fotos" onclick="pepe()" /><br>
<input type="checkbox" id="4" name="fichier3" value="mariscos" onclick="pepe()" /><br>
<input class="btn" type="submit" id="enviar" name="action" value="enviar>" disabled="disabled" />
<input class="btn" type="submit" id="guardar" name="action"  value="guardar" disabled="disabled" />
<input class="btn" type="submit" id="eliminar" name="action"  value="eliminar" disabled="disabled" />
</form> 
Pero vamos, es por ser demasiado puntilloso. Me alegro de que te funcione!

Un saludo!!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.

Última edición por KarlanKas; 24/11/2004 a las 02:23
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 19:36.