JavaScript - Inhabilitar checkbox

 
Vista:
sin imagen de perfil

Inhabilitar checkbox

Publicado por Wasp (24 intervenciones) el 15/06/2016 16:53:52
Buenas a todos/as.

Les expongo mi problema.

Tengo un formulario, dentro de este una tabla con información tanto por fila como por columnas.
Por cada fila, tengo un checkbox.

Me gustaría que cuando el usuario ha pulsado por ejemplo 4 checkbox de la lista que esta viendo, ya se deshabiliten todos los demás.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<form method="post" id="formularioGeneral">
<table id="tabla1">
 
<tr>
<td align=center>Fila1Dato1
<input type="checkbox" id="checkbox"><td>
</tr>
 
<tr>
<td align=center>Fila2Dato2
<input type="checkbox" id="checkbox"><td>
</tr>
 
<tr>
<td align=center>Fila3Dato3
<input type="checkbox" id="checkbox"><td>
</tr>
 
<tr>
<td align=center>Fila4Dato4
<input type="checkbox" id="checkbox"><td>
</tr>
 
</table>
</form>

Supongo que tendra que ser una funcion javascript o jquery y contabilizar si han sido pulsados o puestos en checked tantos checkbox pero no logro hacerlo.

Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder
sin imagen de perfil

Inhabilitar checkbox

Publicado por DAVID (36 intervenciones) el 16/06/2016 10:58:16
con esta fucnion contartias los que estan chequeados:


1
2
3
4
5
6
7
8
9
var checkboxes = document.getElementById("formularioGeneral").checkbox;
 
var cont = 0;
 
for (var x=0; x < checkboxes.length; x++) {
 if (checkboxes[x].checked) {
  cont = cont + 1;
 }
}
Y en base a eso, desactivas todos, no?

Un saludo,
David
estudio de diseño grafico
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Inhabilitar checkbox

Publicado por Wasp (24 intervenciones) el 16/06/2016 16:59:31
Gracias por responder DAVID, es casi justo lo que buscaba, lo unico que ando mirando y completando a lo que me has puesto, sería que, por ejemplo en el caso de Arriba que está. hay 4 checkboxs no?
Pues por ejemplo que el usuario marque los que quiera, pero que cuando el contador detecte que ya hay marcados 2 por ejemplo, automaticamente, desactive todos los demas.

1
2
3
4
5
6
7
8
9
10
11
function miQ(){
 
	var contador = 0;
	$("input:checkbox:checked").each(function(){
		alert("Valor checkbox --> " +$(this).val());
		$('#checkboxPrueba').prop('disabled', true);
		contador = contador + 1;
 
	});
	alert("Numero de veces pulsado --> " +contador)
}
donde pone checkboxPrueba, es tanto la id como el name de todos los checkbox que tengo en la lista, es para no ponerlo solo como checkbox

por ahora este va siendo mi codigo, pero no lo termino de solucionar, a ver si tu sabrias como ayudarme,

Muchas gracias.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Inhabilitar checkbox

Publicado por DAVID (36 intervenciones) el 16/06/2016 17:05:30
Pues poniendo algo así, no?:
1
2
if (contador==4 )
       $('#checkboxPrueba').prop('disabled', true);

Un saludo,
David
paginas web economicas
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Inhabilitar checkbox

Publicado por Wasp (24 intervenciones) el 16/06/2016 17:28:59
Al final me ha quedado asi:

html:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<form id="formularioGeneralForm" method="POST" onclick="miQ()">
	<table id="prueba">
		<thead>
			<tr>
				<th><input name="checktodos" type="checkbox" /></th>
				<th>ID</th>
				<th>Nombre</th>
				<th>Comentario</th>
			</tr>
		</thead>
		<tbody>
			<tr>
				<td><input name="comment-1" type="checkbox" class="checklote" id="checkboxPrueba" name="checkboxPrueba" value="1"></td>
				<td>1</td>
				<td>Juan Perez</td>
				<td>Texto de comentario</td>
			</tr>
			<tr>
				<td><input name="comment-2" type="checkbox" class="checklote" id="checkboxPrueba" name="checkboxPrueba" value="2"></td>
				<td>2</td>
				<td>Juan Perez</td>
				<td>Texto de comentario</td>
			</tr>
			<tr>
				<td><input name="comment-3" type="checkbox" id="checkboxPrueba" name="checkboxPrueba" value="3"></td>
				<td>3</td>
				<td>Juan Perez</td>
				<td>Texto de comentario</td>
			</tr>
			<tr>
				<td><input name="comment-4" type="checkbox" id="checkboxPrueba" name="checkboxPrueba" value="4"></td>
				<td>4</td>
				<td>Juan Perez</td>
				<td>Texto de comentario</td>
			</tr>
		</tbody>
	</table>
</form>


Jquery:

1
2
3
4
5
6
7
8
9
10
function miQ(){
	var contador = 0;
	$("input:checkbox:checked").each(function(){
		contador = contador + 1;
		if(contador === 2){
			$('#checkboxPrueba').prop('disabled', true);
		}
	});
	alert("Numero de veces pulsado --> " +contador)
}


Pero solo me desmarca el primer checkbox y no los que han sido chekeados, he probado a quitar el if de donde esta y ponerlo fuera pero tampoco funciona.
Estoy ahi probando a ver donde puede estar el fallo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

Inhabilitar checkbox

Publicado por DAVID (36 intervenciones) el 17/06/2016 13:32:48
En los input's tienes dos veces la propiedad Name. Debes dejar solo la de checkboxPrueba. A ver si va a ser por eso.


Un saludo,
David
estudio de diseño grafico
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar