[Resolvido] Bug sc_field_display

Olá pessoal,
tenho um aplicação de formulário que contém 5 campos do tipo select, neles tem a opção “outros”, que quando selecionado deve abrir um campo de texto para escrita.

1° Criei os 5 campos “Outros” do tipo texto
2° No evento onScriptInit deixei os campos escondidos da seguinte maneira:

sc_field_display({tipo_instituicao_outros}, ‘off’);
sc_field_display({indicacao_tratamento_outros}, ‘off’);
sc_field_display({tratamento_prescrito_outros}, ‘off’);
sc_field_display({tipo_evento_adverso_outros}, ‘off’);
sc_field_display({tipo_contato_outros}, ‘off’);

3° Em cada select criei um evento Ajax do tipo OnChange e coloquei o seguinte código de acordo com o campo:

// id 5 equivale a outros
if({id_tipo_contato} == 5)
{
sc_field_display({tipo_contato_outros}, ‘on’);
}
else
{
sc_field_display({tipo_contato_outros}, ‘off’);
}

Ao selecionar a opção “outros” no primeiro select ele aparece o campo do tipo texto para escrita, mas ao selecionar a opção outros no segundo select ele desaparece o campo “outros” do primeiro e não chega a aparecer o campo do tipo texto do segundo select.

Não sei se deu para entender, mas qualquer dúvida perguntem!

O campo id_tipo_contato é int no banco?

testa assim
if({id_tipo_contato} == “5”)

Sim é int
mesmo deixando o if assim: if({id_tipo_contato} == “5”)
ele funciona entra no if na mesma maneira sem aspas.

Mas o problema é que sempre que ao selecionar outros “ele” mostra o campo de texto que estava escondido até aqui OK, mas ao selecionar o outros de outro campo select ele esconde o campo do primeiro

Vou tentar mandar print

http://i.imgur.com/u04VdNe.png

http://i.imgur.com/ApppxkG.png

Problema de lógica heim, kkkkk

Bom crie um campo e deixe-o escondido.
Se algum dos campo receber outros, esse campo recebe algum valor, exemplo S
Aí você altera os if´s para

if({id_tipo_contato} == 5 || {camponovo}==‘S’)
{
sc_field_display({tipo_contato_outros}, ‘on’);
{camponovo} = “S”;
}
else
{
sc_field_display({tipo_contato_outros}, ‘off’);
}

Então Rodrigo, fiz uns testes e descobri que ao executar um evento ajax ele executa o OnScriptInit também, escondendo os campos.

Corrigi fazendo uma verificação no OnScriptInit com um valor de uma variável qualquer, apenas para esconder os campos no inicio, ao executar o onChange eu mudo o valor dessa variavel, assim não escondendo os campos.

onScriptInit:

if([corrigeBug] == 0)
{
sc_field_display({tipo_instituicao_outros}, ‘off’);
sc_field_display({indicacao_tratamento_outros}, ‘off’);
sc_field_display({tratamento_prescrito_outros}, ‘off’);
sc_field_display({tipo_evento_adverso_outros}, ‘off’);
sc_field_display({tipo_contato_outros}, ‘off’);
}

onChange Ajax

$corrigeBug = 1;
sc_set_global($corrigeBug);

Legal, acho que no onLoad esse código anterior funcionaria também.