Lançado Adianti Framework 8.0!
Clique aqui para saber mais
Problemas com máscara de CPF e CNPJ quando o formulário é uma cortina lateral Bom dia a todos! Estou tendo problemas para configurar a máscara de um TEntry quando o formulário é aberto como uma cortina lateral. Não aplica, mas quando tiro da cortina lateral tudo ocorre bem. Este é meu primeiro projeto em Adianti. Estou utilizando a versão 8.0. Segue o código: ...
RA
Problemas com máscara de CPF e CNPJ quando o formulário é uma cortina lateral  
Bom dia a todos!

Estou tendo problemas para configurar a máscara de um TEntry quando o formulário é aberto como uma cortina lateral. Não aplica, mas quando tiro da cortina lateral tudo ocorre bem. Este é meu primeiro projeto em Adianti. Estou utilizando a versão 8.0.
Segue o código:
  1. <?php
  2. class ColaboradorForm extends TPage
  3. {
  4.     protected $form;
  5.     use Adianti\Base\AdiantiStandardFormTrait;
  6.     public function __construct()
  7.     {
  8.         parent::__construct();
  9.         #parent::setTargetContainer('adianti_right_panel');
  10.         // Configurações básicas
  11.         $this->setDatabase('booking_notes');
  12.         $this->setActiveRecord('Pessoa');
  13.         $this->setAfterSaveAction(new TAction(['ColaboradorView''onReload'], ['register_state' => 'false']));
  14.         // Formulário principal
  15.         $this->form = new BootstrapFormBuilder('form_Pessoa');
  16.         $this->form->setFormTitle('Cadastro de Colaborador');
  17.         $this->form->setClientValidation(true);
  18.         // Campos do formulário
  19.         $id = new TEntry('id');
  20.         $id->setEditable(false);
  21.         $nome = new TEntry('nome');
  22.         $nome->forceUpperCase();
  23.         $nome->addValidation('Nome', new TRequiredValidator);
  24.         $pessoa_tipo = new TRadioGroup('pessoa_tipo');
  25.         $pessoa_tipo->addItems(['F' => 'Física''J' => 'Jurídica']);
  26.         $pessoa_tipo->setValue('F'); // Define pessoa física como padrão
  27.         $pessoa_tipo->setLayout('horizontal'); // Coloca os itens em uma linha horizontal
  28.         $cpf_cnpj = new TEntry('cpf_cnpj');
  29.         $cpf_cnpj->setId('cpf_cnpj'); // Define um ID único para o campo
  30.         $cpf_cnpj->setSize('20%');
  31.         $cpf_cnpj->addValidation('CPF/CNPJ', new TRequiredValidator);
  32.         $email = new TEntry('email');
  33.         $email->forceLowerCase();
  34.         $email->addValidation('E-Mail', new TRequiredValidator);
  35.         // Adiciona os campos ao formulário
  36.         $this->form->addFields([new TLabel('ID')], [$id]);
  37.         $this->form->addFields([new TLabel('Nome''red')], [$nome]);
  38.         $this->form->addFields([new TLabel('Tipo''red')], [$pessoa_tipo]);
  39.         $this->form->addFields([new TLabel('CPF/CNPJ''red')], [$cpf_cnpj]);
  40.         $this->form->addFields([new TLabel('E-Mail''red')], [$email]);
  41.         // Ações do formulário
  42.         $this->form->addAction(_t('Save'), new TAction([$this'onSave']), 'fa:save green');
  43.         $this->form->addActionLink(_t('New'), new TAction([$this'onEdit']), 'fa:plus-circle green');
  44.         $this->form->addActionLink(_t('Close'), new TAction(['ColaboradorView''onReload']), 'fa:times red');
  45.       
  46.         // Script JavaScript para aplicar a máscara
  47.         $script = new TElement('script');
  48.         $script->type 'text/javascript';
  49.         $script->add("
  50.             $(document).ready(function() {
  51.                 // Função para aplicar a máscara
  52.                 function applyMask(mask, size) {
  53.                     $('#cpf_cnpj').mask(mask).attr('maxlength', size);
  54.                 }
  55.                 // Aplica a máscara inicial com base no valor padrão do tipo de pessoa
  56.                 var initialTipo = $('input[name=\"pessoa_tipo\"]:checked').val();
  57.                 var initialMask = (initialTipo == 'F') ? '999.999.999-99' : '99.999.999/9999-99';
  58.                 var initialSize = (initialTipo == 'F') ? 14 : 18;
  59.                 applyMask(initialMask, initialSize);
  60.                 // Altera a máscara quando o tipo de pessoa for alterado
  61.                 $('input[name=\"pessoa_tipo\"]').on('change', function() {
  62.                     var tipo = $('input[name=\"pessoa_tipo\"]:checked').val();
  63.                     var mask = (tipo == 'F') ? '999.999.999-99' : '99.999.999/9999-99';
  64.                     var size = (tipo == 'F') ? 14 : 18;
  65.                     // Limpa o campo antes de aplicar a nova máscara
  66.                     $('#cpf_cnpj').val('').trigger('change');
  67.                     // Aplica a nova máscara
  68.                     applyMask(mask, size);
  69.                 });
  70.             });
  71.         ");
  72.         $this->form->add($script);
  73.         // Adiciona o formulário à página
  74.         parent::add($this->form);
  75.     }  
  76. }
  77. ?>

Alguém já passou por isso? Podem me ajudar?

Att.
Ricardo Almeida

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 (0)