Ir para conteúdo

POWERED BY:

Arquivado

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

Gdias

Apenas um CheckBox Selecionado

Recommended Posts

Salve amigos,Mais uma vez preciso da força de vcs!Tenho uma tabela onde na frente de cada registro vem um checkbox para ser flegado caso do usuário queira deletar o registro. Até ai beleza, meu código até tem um Checked All jóinha...Minha atual dificuldade é a seguinte:Meu Gestor colocou agora um botão Alterar mas o usuário só poderá selecionar um registro, se clicar em mais que um, pinta um alert('Apenas um registro pode ser selecionado') - se somente um for selecionado, abre formulário para edição.Como verifico isso?Mais uma vez agradeço antecipadamente e um ótimo 2006![]´sGustavo

Compartilhar este post


Link para o post
Compartilhar em outros sites

1 - Estude sobre DOM. Irá te ajudar bastante;

 

2 - Use o firefox caso ainda não use. Ele tem uma janela de Dom inspector que ajuda muito quando agente trabalha com javascript. você pode ver todos os métodos e propriedades de um campo, etc... muito bom.

 

3 - resposta de mão beijada:

 

<script language="javascript">function testaCheck(){	//declaração de vars. A var checados irá contar quantos estão checados.	var inputs,i,retorno_,checados=0;	//pegando os inputs e jogando num array	inputs = document.getElementsByTagName("input");	//div que vai exibir o retorno da funçao	retorno_ = document.getElementById("retorno")		//varrendo o array que tem os inputs	for(i=0;i<inputs.length;i++){		if(inputs[i].type=="checkbox"){ //se os inputs forem checkbox			if(inputs[i].checked==true){				checados++;			}		}	}	//escrevendo o resultado.	//O valor da var checados poderá ser trabalhado de qualquer forma	retorno_.innerHTML = "checkboxes marcados: " + checados;}</script><input type="checkbox" name="hou1" id="hou1"><input type="checkbox" name="hou2" id="hou2"><input type="checkbox" name="hou3" id="hou3"><input type="checkbox" name="hou4" id="hou4"><input type="checkbox" name="hou5" id="hou5"><input type="button" name="botao" id="botao" onclick="testaCheck()"><div id="retorno" name="retorno" style="border:1px solid black"> </div>

O script é muito simples e fácil de entender. Qualquer dúvida posta ae.

Falows.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salve amigo Micox,Agradeço o código mastigado, mas infelizmente ele não funcionou.Estou tentando desde ás 8h fazê-lo funcionar mas estou jogando a toalha (rs)...Preciso que ele verifique se existe mais de um chekbox selecionado, se houver, abre um alert, caso contrário prossegue para a próxima página.Ainda em tempo, o que é DOM. ?Grato por sua ajuda e interesse,Gustavo

Compartilhar este post


Link para o post
Compartilhar em outros sites

perguntas:1- você testou este código numa página limpa, ou em sua página já? Ele deve ser testado em uma página nova (limpa) e DEPOIS, voce customiza ele em sua página já feita.2- você clicou no botao?3- Quando clicou, não apareceu escrito "checkboxes selecionadas, etc..." ?PS.: DOM significa Document Object Model (acho) e é um esquema de padronização de objetos, etc dentro do seu html, de forma que fique fácil encontrar os elementos e funções deles lá dentro. Se você usa o firefox vá em ferramentas>Dom inspector e onde tá escrito "Objeto - DOM Node", mude para "Javascript object". você vai ver que coisa bonita e de grande auxílio... hehe :) PS2.: NÃO DESISTA. Isso é o negoço mais simples do mundo de fazer. POste suas dúvidas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boas Micox,

 

Fiz uma página "limpa" e agora estou customizando na minha...

Me problema está em fazer com que o código veja se existe mais de um selecionado e se houver apresentar o alert (não div) e não permitir que o cara continue.

 

Veja como está o código:

 

function testaCheck(){	//declaração de vars. A var checados irá contar quantos estão checados.	var inputs,i,checados=0;	//pegando os inputs e jogando num array	inputs = document.getElementsByTagName("selecao");		//varrendo o array que tem os inputs	for(i=0;i<inputs.length;i++){		if(inputs[i].type=="checkbox"){ //se os inputs forem checkbox			if(inputs[i].checked==true){				checados++;		if(checados = 1){		alert('Você só pode selecionar uma Opção!');			}			}		}	} }

[]´s

Gustavo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, um errinho muito pequeno. você só colocou um if no lugar errado. Atenção com isso. Atenção com o abre chaves, fecha chaves. Ah, e faltou um > (maior) em vez do igual (=).

 

o certo:

for(i=0;i<inputs.length;i++){		if(inputs[i].type=="checkbox"){ //se os inputs forem checkbox			if(inputs[i].checked==true){ checados++; }		} //fecha if dos inputs checkbox}//fecha forif(checados>1){ alert("opa, tem mais de 1 selecionado"); }

E Para impedir que o cara continue, coloque um return false logo após o alert:

 

funcao testaCheck(){......   if(checados>1){	 alert("opa, tem mais de 1 selecionado"); return false;    }else{ return true; }}

E coloque um return testaCheck() no evento onsubmit do formulário. Daí quando o cara submeter o formulário será executado o testaCheck, se ele retornar false, o formulário nao será submetido, se retornar true o formulário será submetido:

<form onsubmit="return testaCheck();" action blablalb...>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salve Micox,

 

Seguinte, colocando o sinal de ">" não rola nada, agora se eu coloco "=" ou "<" a mensagem de alert sempre aparece! ???

 

if(checados>1){	  alert("opa, tem mais de 1 selecionado"); return false; 	}else{ return true; }

Meu Ruindows é o XP e tem uma pá de coisainhas que não viram direito... será que tem alguma ligação?

 

Obrigado mais uma vez por suas força e desculpe a enchurrada de dúvidas!

 

Gustavo

Compartilhar este post


Link para o post
Compartilhar em outros sites

Voce quer que dê o alerta se for selecionado MAIS de 1 checkbox não é isso? traduzindo fica checados > 1.Se você colocar checados = 1, vai exibir o alerta apenas se houver apenas UM (1) checado. Se você colocar checados < 1. Vai exibir o alerta apenas se houver MENOR que 1 checado (ou zero checados). Entendeu?

Meu Ruindows é o XP e tem uma pá de coisainhas que não viram direito... será que tem alguma ligação?

Provavelmente não tem nada a ver não.Caso não tenha conseguido resolver, posta o código aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Salve Micox,

 

Vamos lá!

 

function testaCheck(){	//declaração de vars. A var checados irá contar quantos estão checados.	var inputs,i,checados=0;	//pegando os inputs e jogando num array	inputs = document.getElementsByTagName("selecao");		//varrendo o array que tem os inputs	for(i=0;i<inputs.length;i++){		if(inputs[i].type=="checkbox"){ //se os inputs forem checkbox			if(inputs[i].checked==true){				checados++;			}		}	}	if(checados>1){	  alert("Só pode haver um item selecionado."); return false; 	}else{ document.location.href('XPTO.html'); }}

na página ficou:

 

<input type="checkbox" name="selecao" value="xpto1"><input type="checkbox" name="selecao" value="xpto2"><input type="checkbox" name="selecao" value="xpto3"><input type="checkbox" name="selecao" value="xpto4"><input type="image" src="../botao_alterar.gif" onclick="return testaCheck();">

Eu flego um checkbox e nada acontece... deveria ir para página XPTO.html

Eu flego os quatro e a mensagem não aparece

 

 

Quantas cervejas eu já estou lhe devendo (rs)?

 

Valeu!

Gustavo

Compartilhar este post


Link para o post
Compartilhar em outros sites

hahehe. A cerveja você me paga quando vier a Goiânia. Por enquanto, to vendo que você saka de JSP, daí qualquer dia você me ajuda, que eu to começando a mexer com applets agora. hehe

 

Resolução (apenas pequenos erros):

 

1 - o getElementsByTagName, pega os elementos através do nome da tag e joga num array:

inputs = document.getElementsByTagName("selecao");Ficará:inputs = document.getElementsByTagName("input");

2 - O document.location.href não é uma função:

document.location.href('XPTO.html')ficará:document.location.href = 'XPTO.html';

3 -Código completo:

<script language="javascript">function testaCheck(){	//declaração de vars. A var checados irá contar quantos estão checados.	var inputs,i,checados=0;	//pegando os inputs e jogando num array	inputs = document.getElementsByTagName("input");		//varrendo o array que tem os inputs	for(i=0;i<inputs.length;i++){		if(inputs[i].type=="checkbox"){ //se os inputs forem checkbox			if(inputs[i].checked==true){				checados++;			}		}	}	if(checados>1){	  alert("Só pode haver um item selecionado."); return false;	}else{ document.location.href = 'XPTO.html'; }}</script><input type="checkbox" name="selecao" value="xpto1"><input type="checkbox" name="selecao" value="xpto2"><input type="checkbox" name="selecao" value="xpto3"><input type="checkbox" name="selecao" value="xpto4"><input type="image" src="../botao_alterar.gif" onclick="return testaCheck();">

To dando uma saida, já já eu volto, caso tenha mais problemas.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Micox,Você é o cara!Se vier á Sampa não se preocupe com a cerveja... já tá paga (rs)Agora rodou que foi uma beleza!No JSP ainda estou engatinhando, mas se precisar... estamos aí! Dois babam mais colorido do que um (rs)Obrigado meu amigo![]´sGustavo

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.