Executar JavaScript em TStandardForm Caros, estou utilizando o código a seguir para alterar um campo, ao selecionar um TCheckBox: ...
MM
Executar JavaScript em TStandardForm  
Caros, estou utilizando o código a seguir para alterar um campo, ao selecionar um TCheckBox:

 
  1. <?php
  2. $data_ini = new TDate('data_ini');
  3. $tempo_indeterminado = new TCheckButton('tempo_indeterminado');
  4. $script = new TElement('script');
  5. $script->type = 'text/javascript';
  6. $script->add("function setTempoIndeterminado(){
  7. if(document.getElementById('tempo_indeterminado').value == '1') {
  8. document.getElementById('data_ini').readonly = false;
  9. } else {
  10. document.getElementById('data_ini').readonly = true;
  11. }
  12. }");
  13. parent::add($script);
  14. $tempo_indeterminado->{'onclick'} = "setTempoIndeterminado()";
  15. ?>


Infelizmente o código do JavaScript não atua.
Alguém pode dar uma dica de como executar códigos JavaScript nesse tipo de página?

Curso Dominando o Adianti Framework

O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado!


Dominando o Adianti Framework Quero me inscrever agora!

Comentários (7)


IF

Magnaldo, acho que faltou vc definir um id pro seus campos:

 
  1. <?php
  2. $data_ini->setId('data_ini');
  3. $tempo_indeterminado->setId('tempo_indeterminado');
  4. ?>
MM

Obrigado pela dica Ivan.
Inseri o Id, mesmo assim eu clicko no checkbox mas não atua no campo de data.
IF

Sugiro que vc faça conforme o tutor, eu uso dessa forma.

www.adianti.com.br/framework_files/tutor/index.php?class=FormEnableD
MM

Muito bom!

Mas realmente para TCheckBox não funciona mesmo. Ele não tem o evento onChange...teria que implementar. Não foi feito pra isso.

Valeu!
NR

Magnaldo, não utilize o TCheckButton diretamente. Use o TCheckGroup que, Inclusive, possui a função setChangeAction
MM

Ok, Nataniel.
Mas como eu relaciono o ítem do checkgroup com o campo do banco de dados?
Tipo, tenho um campo com o nome ativo no banco de dados, então, ao marcá-lo, deve ir para o db, e alterar o formulário, habilitando ou não os demais campos.
NR

Você vai ter que fazer um tratamento na função onSave, pois será retornado um array para esse campo.
 
  1. <?php
  2. //onSave
  3. $object->check = $object->check ? 'S' : 'N';
  4. ?>