Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

winryzinha

[Resolvido] Limitação de selecões na Checkbox

Recommended Posts

Bom dia pessoal,

 

estou programando uma pagina em php e javascript, so que não conheço mt a segunda linguagem.

 

a função em java script que eu pretendia fazer era por um limite nas checkboxs selecionadas em um formulario. peguei a função de um site:

 

<script type="text/javascript">
function chkcontrol(j) {
var total=0;
for(var i=0; i < document.form1.ckb.length; i++){
if(document.form1.ckb[i].checked){
total =total +1;}
if(total > 3){
alert("Please Select only three")
document.form1.ckb[j].checked = false ;
return false;
}
}
} </script>

porem, surgiu um probleminha. ao designar o nome de cada checkbox eu criei uma array, e não posso exluir essa função. explicando melhor:

 

<input type='checkbox' name='cod[]' value='1' onclick="chkcontrol(0)";>
<input type='checkbox' name='cod[]' value='2' onclick="chkcontrol(1)";>
<input type='checkbox' name='cod[]' value='3' onclick="chkcontrol(2)";>
etc...

(o nome 'cod[]' não pode ser mudado, pois o formulario envia os dados para uma pagina onde é necessario a concatenação dos valores de cada checkbox selecionada)

 

e a um conflito com o codigo java script que cria uma array tbm. exemplo:

 

<script type="text/javascript">
function chkcontrol(j) {
var total=0;
for(var i=0; i < document.form1.cod[].length; i++){
if(document.form1.cod[][i].checked){
total =total +1;}
if(total > 3){
alert("Por favor selecione no maximo 3 opções")
document.form1.cod[][j].checked = false ;
return false;
}
}
} </script>

nesse caso cria uma array em cima de uma array, e esta ai o problema.

 

minha pergunta é: há um modo de fazer a função de limit checkbox em java script com o nome sendo um array?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim, no teu caso, usando DOM..

 

trocar os:

document.form1.cod[]
por:

document.getElementsByName('cod[]')

fica bem melhor o script.. dá uma olhada:

<script type="text/javascript">
function chkcontrol(j) 
{
	var total=0;
	
	var inputs = document.getElementsByName('cod[]');
	for(var i=0; i < inputs.length; i++)
	{
		if(inputs[i].checked)
		{
			total = total +1;
		}
		if(total > 3)
		{
			alert("Por favor selecione no maximo 3 opções")
			inputs[j].checked = false ;
			return false;
		}
	}
}
</script>


	<input type="checkbox" name="cod[]" value="1" onclick="chkcontrol(0)" />
	<input type="checkbox" name="cod[]" value="2" onclick="chkcontrol(1)" />
	<input type="checkbox" name="cod[]" value="3" onclick="chkcontrol(2)" />
	<input type="checkbox" name="cod[]" value="3" onclick="chkcontrol(3)" />
	<input type="checkbox" name="cod[]" value="3" onclick="chkcontrol(4)" />
	<input type="checkbox" name="cod[]" value="3" onclick="chkcontrol(5)" />

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde!

Show de bola esse java

mais preciso realiza isso com dados puxando do MySQL com PHP

 

pois o onclick="chkcontrol(0)" precisa de uma numeração .... exemplo abaixo

 

 

onclick="chkcontrol(0)"

onclick="chkcontrol(1)"

onclick="chkcontrol(2)"

onclick="chkcontrol(3)"

 

como eu faço para esses codigo aparece dinâmico ...... já que eu estou puxando do MySQL pelo php??

Compartilhar este post


Link para o post
Compartilhar em outros sites

como eu faço para esses codigo aparece dinâmico ...... já que eu estou puxando do MySQL pelo php??

programação básica.

 

só colocar um contador

 

$i = 0;
while( $dados = ... )
{
 echo '<input ...'.$i...

 $i++
}

 

na verdade, faz 1 ano que escrevi esse codigo.

não é necessario o j ali, pode passar o this para dentro da function, e trabalhar com ele.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.