macro sc_field_display deixa off os campos anteriores **Resolvido

Pessoal,
estou com uma dúvida quanto ao uso da macro sc_field_display.

Estou desenvolvendo um questionário (aplicação formulário único) e nele tenho alguns campos que tenho que mostrar ou não, dependendo da resposta da questão anterior.

Para facilitar minha explicação vamos supor que tenho 2 campos ligados ao sc_field_display do evento ajax e o 1o. campo já está on (ligado).

Quando eu clico no 2o. campo que dispara a macro sc_field_display no evento ajax ele abre o 2o. campo mas fecha o 1o.

Como devo fazer para não perder a configuração dos campos anteriores?

Tenho que tratar todas as possibilidades toda vez? E se eu tiver uns 15 campos assim, devo tratar todos?

Em algum evento o 1o campo tem sc_field_display off?

Como o George desconfia, em algum momento vc deve estar ocultando o primeiro campo.

Mas, se apagou tem que acender, se acender tem que apagar. Suponhamos que vc tem 3 campos e que os campos 2 e 3 devem ser mostrados dependendo do valor do campo 1 e que se o valor do campo 1 não for igual a nenhum valor entre os esperados os campos 2 e 3 devem ser ocultados novamente. Ao carregar a aplicação somente o campo 1 deve ser mostrado e a validação seria algo como isso:

if (campo1 == 1) {
mostra campo2;
}
elseif(campo1 == 2) {
mostra campo3;
} else {
oculta campo2;
oculta campo3;
}

Isso pode ser feito de Ns maneira, ó código usando IFs é apenas para dar uma clareada.

Isso é lógica pura de programação, pesquise como já mencionado o IF e Switch Case, e sem contar que terá que criar em campo o evento que deseja com as ações que deseja.

Eu tenho um form aqui que utilizo muito isso, não é um questionário mas oculto e mostro campos, botões de acordo com as escolhas do usuário, isso não dá montar em um campo só as ações de todos.

Eu ainda não consegui solucionar, devo estar errando em algum evento.

Segue o que estou fazendo.

Tenho 2 campos checkbox (check1 e check2) e cada um tem seu campo mostra1 e mostra2.
Para deixa-los ocultos no início do programa eu faço isso no evento onScriptInit

//Configuração inicial sc_field_display({mostra1}, 'off'); sc_field_display({mostra2}, 'off');

e criei 2 eventos ajax no onClick do check1 e do check2:

check1_onClick:

[code]
if({check1}==1)
{
sc_field_display({mostra1},‘on’); //Display field

}else // Hide field
{
sc_field_display({mostra1}, ‘off’);
}[/code]

check2_onClick:

[code]if({check2}==1)
{
sc_field_display({mostra2},‘on’); //Display field

}else // Hide field
{
sc_field_display({mostra2}, ‘off’);
}[/code]

Então quando clico no check1 ele mostra o mostra1, certinho.
Mas quando clico no check2 ele mostra o mostra2 e fecha o mostra1 mesmo com o check1 clicado.

Deve estar acontecendo que nos eventos onClick de cada check o programa passa pelo evento onScriptInit e fecha os campos de novo?
Como devo proceder?

Agradeço a ajuda.

Pessoal, [glow=red,2,300]resolvido[/glow].
Deixando de fora questão de logica de programação foi mais um engano de evento.

Ao invés de deixar os campos inicialmente off no evento onScriptInit tirei e coloquei isso no evento onLoad.

Creio que seja porque o onLoad só roda 1 vez no carregamento e o onScriptInit rode toda vez que o evento ajax onClick é chamado.

OnLoad é o lugar ideal para tratar tudo refente aos forms, o onScriptInit é mais para carregar itens que serão usados posteriormente na aplicação, fazer um select, um update que será visto depois no form ou na consulta. Ou ate mesmo carregar bibliotecas externas, código javascript, etc…etc…

Parabéns por conseguir achar o erro e postar a solução pro pessoal!!