Desabilitar campos checkboxlist struts 2 com javascript

Pessoal,

Gostaria de saber como faço para desabilitar cada caixinha de uma checkboxlist no struts 2, usando javascript.

A principio eu tinha um radio e precisei trocar por checkbox.

O radio eu conseguia desativar da seguinte forma:

Se o nome do radio eh rad, para cada opçao do radio é dado um nome, com um inteiro concatenado ao nome original.

Assim, um radio com 3 opções, teria suas opções com os seguintes nome: rad1, rad2 e rad3.

Tentei fazer o mesmo para desabilitar as opções do checkboxlist mas não funcionou. O comando para desabilitar foi simplesmente ignorado.

Alguém já passou por isso?

Valeu!

Amigo, não se esqueça da limitação das versões 2.1.x do struts, nas quais é IMPOSSÍVEL usar javascript em JSP que tenha alguma tag DOJO (<sx…).

Quando a solução, sugiro o uso de Jquery que é bem fácil.

[quote=jyoshiriro]Amigo, não se esqueça da limitação das versões 2.1.x do struts, nas quais é IMPOSSÍVEL usar javascript em JSP que tenha alguma tag DOJO (<sx…).

Quando a solução, sugiro o uso de Jquery que é bem fácil.[/quote]

Realmente não sabia dessa limitação. De fato, até então estou usando javascript numa JSP que tem a tag sx:tabbedpanel sem problemas…
O que implica essa limitação que vc mencionou?

Alguém com alguma resposta interessante?

Tem certeza que está usando javascript nessa página sem problemas?

Faça um teste simples:

Use

Dai em qualquer elemento coloque o “onclick” para chamar esta função. Então veja o resultado (não vai acontecer nada).

Quanto a sua solução, não se esqueça que em checkbox os nomes de todos os campos devem ser os mesmos, ou seja, todos os ckeckbox devem ter a propriedade “name” igual (a não ser que realmente sejam um para cada campo diferente).

[quote=jyoshiriro]Tem certeza que está usando javascript nessa página sem problemas?

Faça um teste simples:

Use

Dai em qualquer elemento coloque o “onclick” para chamar esta função. Então veja o resultado (não vai acontecer nada).

Quanto a sua solução, não se esqueça que em checkbox os nomes de todos os campos devem ser os mesmos, ou seja, todos os ckeckbox devem ter a propriedade “name” igual (a não ser que realmente sejam um para cada campo diferente). [/quote]

Sim, tenho certeza. E é exatamente assim que você mencionou que estou usando. Conforme o usuário seleciona alguma opção de um radio, uma função javascript habilita ou desabilita determinados campos. E tudo isso dentro de um <sx:tabbedpane.

Não estou usando um checkbox “puro”. Estou usando um <s:checkboxlist, que tem a propriedade list, que cria um checkbox pra cada elemento da lista. Não é necessário se preocupar com a propriedade name de cada atributo. Mais alguma ideia?

OBS: Essa limitação aí está documentada em algum lugar?

Se puder postar o código que está usando posso ver o que está havendo.

PS: gostaria de saber como você fez para funcionar o javscript com DOJO, pois comigo o dojo simplesmente descarta do javascript do JSP mesmo se eu usar os benditos atributos “executeScript=‘true’” e “separateScripts=‘true ou false’”. E todos os meus amigos que usam o DOJO plugin têm esse mesmo problema.

Ah… essa limitação está até do site de ISSUES do Struts2, mas não lembro em qual parte.

Lembrei de quando ocorre isso:

Se você faz uma chamada a um JSP com DOJO Plugin e javascript, tudo roda normal, mas se usar um <sx:a para um div com chamada ajax, este JSP carregado terá todos os seus javascripts descartados se lá houver tags DOJO. Repito que isso ocorre mesmo com aqueles atributos de “executeScripts” e “separateSripts” com valores corretos.

[quote=jyoshiriro]Se puder postar o código que está usando posso ver o que está havendo.

PS: gostaria de saber como você fez para funcionar o javscript com DOJO, pois comigo o dojo simplesmente descarta do javascript do JSP mesmo se eu usar os benditos atributos “executeScript=‘true’” e “separateScripts=‘true ou false’”. E todos os meus amigos que usam o DOJO plugin têm esse mesmo problema.[/quote]

Criei uma página de teste mais simples só mostrar como fiz:

[code]
<%@ page language=“java” contentType=“text/html; charset=ISO-8859-1”
pageEncoding=“ISO-8859-1”%>

<%@taglib prefix=“s” uri="/struts-tags"%>
<%@taglib prefix=“sx” uri="/struts-dojo-tags" %>

Insert title here

<sx:tabbedpanel id=“panel”>
<s:actionerror/>
<s:actionmessage/>
<s:form action=“formulario-cadastral”>

			<sx:div id="tabCadastro" label="Cadastro">
			
			<s:radio  label="NovoFax" onclick="teste(this)" list="#{'1':'Sim','0':'Não'}" name="bla" value="1" required="true"/>
			<s:textfield  id="nf1" label="Plano Contratado" name="blablabla" required="true"></s:textfield>
			<s:textfield id="nf2" label="Valor de Processamento" name="nome" required="true"></s:textfield>
			</sx:div>
		</s:form>

</sx:tabbedpanel>

[/code]

Voltando ao assunto original, alguma sugestão de como desabilitar um checkboxlist do struts 2 usando javascript?

Amigo,

Primeiro substitui <s:radio por <s:checkboxlist e “funcionou”.
A questão é saber o que você quer que aconteça…
Você quer que desavilite os controles quando se faz o quê? Quando clica em quaquer item? em algum específico?

[quote=jyoshiriro]Amigo,

Primeiro substitui <s:radio por <s:checkboxlist e “funcionou”.
A questão é saber o que você quer que aconteça…
Você quer que desavilite os controles quando se faz o quê? Quando clica em quaquer item? em algum específico?

[/quote]

Pois é. Eu estava utilizando radio antes, e também funcionava, mas precisei trocar pra checkbox pra atender a uma regra de negócio.

O problema parece estar mesmo com essa (maldita) checkboxlist.

É assim:

Eu tenho um radio, onde o usuário pode escolher sim ou não.

Caso escolha sim, alguns campos devem ser habilitados, dentre eles esse checkboxlist.

Caso escolha não, esses mesmos campos devem ser desabilitados.

Então o problema é esse, desabilitar ou habilitar os “quadradinhos” de uma checkboxlist dependendo de qual opção o usuário selecionar num radio.

[quote=jyoshiriro]Amigo,

Primeiro substitui <s:radio por <s:checkboxlist e “funcionou”.
A questão é saber o que você quer que aconteça…
Você quer que desavilite os controles quando se faz o quê? Quando clica em quaquer item? em algum específico?

[/quote]

nada mais a dizer?