Seleção única checkBox

797 views
Skip to first unread message

Sérgio Fantin

unread,
Aug 17, 2010, 1:53:08 PM8/17/10
to jav...@googlegroups.com
Olá pessoal,

tenho uma árvore(rich:tree) onde as folhas são checkboxes(h:selectBooleanCheckbox). Preciso que meus checkboxes se comportem como radioButtons permitindo somente que um seja selecionado.

Alguém já fez algo parecido?

--
Sérgio Fantin
http://serjaum.wordpress.com

Rafael Ponte

unread,
Aug 17, 2010, 1:56:44 PM8/17/10
to jav...@googlegroups.com
Com jQuery não seria dificil, isso claro, se a preocupação for apenas no lado cliente. Mas acho que server-side também não seria complicado.

Então, o comportamento é client ou server side?

2010/8/17 Sérgio Fantin <sergio.l...@gmail.com>

--
Você recebeu esta mensagem por que é membro do Google Group "Javasf".
http://groups.google.com/group/javasf
 
Conheça também:
- Grupo Java Brazil em http://groups.google.com/group/thejavabrazil
- Empregos/Oportunidades JSF em http://bit.ly/empregosjsf



--
Rafael Ponte
http://www.rponte.com.br

Sérgio Fantin

unread,
Aug 17, 2010, 2:06:24 PM8/17/10
to jav...@googlegroups.com
Na verdade o problema é que minha árvore é criada programaticamente. Tudo no MB mesmo. :(

Se for possível manter a mesma estrutura que tenho e só resolver esse problema de "multi-select" seria bom demais.

Sabe algum esquema pra restringir a multi-seleção para uma só?

Abraços...

2010/8/17 Rafael Ponte <rpo...@gmail.com>



--
Sérgio Fantin
http://serjaum.wordpress.com

Ellison Alves

unread,
Aug 17, 2010, 2:12:50 PM8/17/10
to jav...@googlegroups.com
Sérgio,

do lado do cliente você pode fazer um getElementsByTagName no checkBox e contar a property checked desses caras...se for maior q 1, alert e não deixa! =)
No evento onsubmit vc dispara o javascript.

no managed bean, vc pode ter uma lista com os items selecionados...se a listar tiver tamanho != 1 manda um erro na tela.


Ellison Alves de Souza

Luiz Eduardo Kowalski

unread,
Aug 17, 2010, 1:55:46 PM8/17/10
to jav...@googlegroups.com
uma vez eu fiz. utilizei listeners, para desmarcar os indesejados quando um certo checkbox fosse selecionado
não tenho o código aqui, visto que na minha antiga empresa, não era permitido copiar qualquer trecho de código :(

thiago moraes

unread,
Aug 17, 2010, 2:19:47 PM8/17/10
to jav...@googlegroups.com
criaria a partir do onclick do checkbox.

handleCheckBoxLikeRadio (currentCheck) {
  
 $(':checkbox:checked').removeAttr('checked');
currentCheck.checked=true

}

Acho que funciona :)


2010/8/17 Luiz Eduardo Kowalski <luizeduar...@gmail.com>
uma vez eu fiz. utilizei listeners, para desmarcar os indesejados quando um certo checkbox fosse selecionado
não tenho o código aqui, visto que na minha antiga empresa, não era permitido copiar qualquer trecho de código :(

--
Você recebeu esta mensagem por que é membro do Google Group "Javasf".
http://groups.google.com/group/javasf
 
Conheça também:
- Grupo Java Brazil em http://groups.google.com/group/thejavabrazil
- Empregos/Oportunidades JSF em http://bit.ly/empregosjsf



--
Thiago Alves de Moraes
thiag...@gmail.com

Sérgio Fantin

unread,
Aug 17, 2010, 2:21:28 PM8/17/10
to jav...@googlegroups.com
Mas neste caso eu deixaria o usuário clicar em mais de um e eu só saberia que isso aconteceu no onsubmit, certo?!

Eu não posso deixar o cara selecionar mais de um.

2010/8/17 Ellison Alves <elliso...@gmail.com>

Ellison Alves

unread,
Aug 17, 2010, 2:24:28 PM8/17/10
to jav...@googlegroups.com
Já que você não pode selecionar mais de um e quiser validar isso no server..
utilize ajax e sete a propriedade qndo selecionar...e a marque com a null quando for desmarcada.

Kirmaier Andrade

unread,
Aug 17, 2010, 2:24:54 PM8/17/10
to jav...@googlegroups.com
onClick. Clicou dispara o JS. tem como clicar em mais de um nao!

Você pode aproveitar essa ideia e quando ele marcar um, vc coloca os outros disabled. E somente apos ele desmarcar, que habilita para selecao os demais.

É uma alternativa.

2010/8/17 Sérgio Fantin <sergio.l...@gmail.com>



--
[]'s,
Kirmaier Barbosa de Andrade
http://kirmaier.blogspot.com/

thiago moraes

unread,
Aug 17, 2010, 2:25:26 PM8/17/10
to jav...@googlegroups.com
Aquele cod javascript ->

quando ele selecionar outro, o anterior será "deschecado".

2010/8/17 Ellison Alves <elliso...@gmail.com>



--

Sérgio Fantin

unread,
Aug 17, 2010, 2:44:19 PM8/17/10
to jav...@googlegroups.com
Vou tentar esse aqui do Thiago:

handleCheckBoxLikeRadio (currentCheck) {
     $(':checkbox:checked').
     removeAttr('checked');
     currentCheck.checked=true
}

Acredito que funcione, sim.

Já dou o feedback.

Obrigado a todos que ajudaram.

2010/8/17 thiago moraes <thiag...@gmail.com>

Rafael Ponte

unread,
Aug 17, 2010, 3:03:10 PM8/17/10
to jav...@googlegroups.com
Via javascript é melhor e mais simples! Caso queria alterar no lado server você precisa disparar eventos Ajax para alterar a árvore, o que também não é dificil e já foi comentado aqui :-)

2010/8/17 Sérgio Fantin <sergio.l...@gmail.com>

Sérgio Fantin

unread,
Aug 17, 2010, 3:12:39 PM8/17/10
to jav...@googlegroups.com
[RESOLVIDO]

Solução de thiago moraes:

<html>
<head>
 <script type="text/javascript" src="/jsf/resources/jquery.js"></script>

<script type="text/javascript">
$(document).ready(function(){
  $(".multiItem").click(function(){
       $('.multiItem').attr('checked',false);
       $(this).attr('checked', true);
  });
});

</script>
</head>
<body>
<div class="multiCheckBox">
 <span class="multiGroup">
  <div><input class="multiItem" value="a" name="list" type="checkbox" />a</div>
  <div><input class="multiItem" value="b" name="list" type="checkbox" />b</div>
  <div><input class="multiItem" value="c" name="list" type="checkbox" />c</div>
 </span>
</div>
</body>
</html>


Obrigado a todos que ajudaram.

Rafael Ponte

unread,
Aug 17, 2010, 3:26:55 PM8/17/10
to jav...@googlegroups.com
Boa! Javascript é mais simples mesmo :-)

Flávio Cysne Ferreira Gomes

unread,
Aug 17, 2010, 4:02:10 PM8/17/10
to jav...@googlegroups.com
Sérgio, mesmo com o problema resolvido, gostaria de te alertar p/ uma possível incompatibilidade.

Caso sua página seja um xhtml ou siga o padrão do xml, será necessário você usar o CDATA comentado dentro da tag script. Mais ou menos assim:

<script type="text/javascript">
//<![CDATA[

// substitui este comentário pelo seu código javascript

//]]>
</script>

Outra solução, e eu prefiro aconselhar esta, seria colocar o seu código javascript em um arquivo .js.

Espero ter ajudado.

Flávio Cysne

Rafael Ponte

unread,
Aug 17, 2010, 9:46:48 PM8/17/10
to jav...@googlegroups.com
Isso só é necessário se houver caracteres estranhos ou utilizados em
XML, como > e <, por exemplo.

On Tuesday, August 17, 2010, Flávio Cysne Ferreira Gomes

Reply all
Reply to author
Forward
0 new messages