AR
Tornando campos invisíveis com onChangeAction
Olá, estou usando o recurso de tornar um campo invisível ou visível dependendo da ocasião. No meu caso, quando seleciono(TCombo) como pessoa Física, Escondo CNPJ e IE e quando seleciono Pessoa Jurídica, escondo CPF e Identidade. Tudo está funcionando perfeitamente até quando algum campo é validado. Ex: se o e-mail está invalido(TEmailValidator), quando isso acontece perco o controle e aparecem os quatros campos na tela e aí só carregando a tela novamente.
Alguém pode ajudar ?
Obrigado.
Alguém pode ajudar ?
Obrigado.
- <?php
- $tipo_pessoa->addItems( ['F' => 'Física', 'J' => 'Jurídica'] );
- $change_action_cpf_cnpj = new TAction(array($this, 'onChangeAction'));
- $tipo_pessoa->setChangeAction($change_action_cpf_cnpj);
- $this->form->addFields([new TLabel('Id:')],[$id]);
- $this->form->addFields([new TLabel('Nome:')],[$nome],[new TLabel('Tipo Pessoa:')],[$tipo_pessoa]);
- $this->form->addFields([new TLabel('CPF:','#2196F3')],[$cpf],[],[]);
- $this->form->addFields([new TLabel('Identidade:','#2196F3')],[$documento],[],[]);
- $this->form->addFields([new TLabel('CNPJ :','#19713E')],[$cnpj],[],[]);
- $this->form->addFields([new TLabel('IE:','#19713E')],[$ie],[],[]);
- public static function onChangeAction($param)
- {
- if ($param['tipo_pessoa'] == 'F')
- {
- TQuickForm::showField('form_Pessoa', 'cpf');
- TQuickForm::showField('form_Pessoa', 'documento');
- TQuickForm::hideField('form_Pessoa', 'cnpj');
- TQuickForm::hideField('form_Pessoa', 'ie');
- }
- else
- {
- TQuickForm::hideField('form_Pessoa', 'cpf');
- TQuickForm::hideField('form_Pessoa', 'documento');
- TQuickForm::showField('form_Pessoa', 'cnpj');
- TQuickForm::showField('form_Pessoa', 'ie');
- }
- }
- public function onSave($param = null)
- {
- try
- {
- TTransaction::open('dbaerp'); // abre transação
- $this->form->validate(); // valida dados <----Neste momento perco o controle.
- ?>
Você pode transformar a função onSave em estática:
adianti.com.br/framework_files/tutor/index.php?class=FormStaticBuild
Ou chamar a função TForm::sendData para reexecutar a ação de alteração do campo:
Obrigado, Nataniel! Assim funcionou perfeitamente.