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:
Alguém já passou por isso? Podem me ajudar?
Att.
Ricardo Almeida
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:
- <?php
- class ColaboradorForm extends TPage
- {
- protected $form;
- use Adianti\Base\AdiantiStandardFormTrait;
- public function __construct()
- {
- parent::__construct();
- #parent::setTargetContainer('adianti_right_panel');
- // Configurações básicas
- $this->setDatabase('booking_notes');
- $this->setActiveRecord('Pessoa');
- $this->setAfterSaveAction(new TAction(['ColaboradorView', 'onReload'], ['register_state' => 'false']));
- // Formulário principal
- $this->form = new BootstrapFormBuilder('form_Pessoa');
- $this->form->setFormTitle('Cadastro de Colaborador');
- $this->form->setClientValidation(true);
- // Campos do formulário
- $id = new TEntry('id');
- $id->setEditable(false);
- $nome = new TEntry('nome');
- $nome->forceUpperCase();
- $nome->addValidation('Nome', new TRequiredValidator);
- $pessoa_tipo = new TRadioGroup('pessoa_tipo');
- $pessoa_tipo->addItems(['F' => 'Física', 'J' => 'Jurídica']);
- $pessoa_tipo->setValue('F'); // Define pessoa física como padrão
- $pessoa_tipo->setLayout('horizontal'); // Coloca os itens em uma linha horizontal
- $cpf_cnpj = new TEntry('cpf_cnpj');
- $cpf_cnpj->setId('cpf_cnpj'); // Define um ID único para o campo
- $cpf_cnpj->setSize('20%');
- $cpf_cnpj->addValidation('CPF/CNPJ', new TRequiredValidator);
- $email = new TEntry('email');
- $email->forceLowerCase();
- $email->addValidation('E-Mail', new TRequiredValidator);
- // Adiciona os campos ao formulário
- $this->form->addFields([new TLabel('ID')], [$id]);
- $this->form->addFields([new TLabel('Nome', 'red')], [$nome]);
- $this->form->addFields([new TLabel('Tipo', 'red')], [$pessoa_tipo]);
- $this->form->addFields([new TLabel('CPF/CNPJ', 'red')], [$cpf_cnpj]);
- $this->form->addFields([new TLabel('E-Mail', 'red')], [$email]);
- // Ações do formulário
- $this->form->addAction(_t('Save'), new TAction([$this, 'onSave']), 'fa:save green');
- $this->form->addActionLink(_t('New'), new TAction([$this, 'onEdit']), 'fa:plus-circle green');
- $this->form->addActionLink(_t('Close'), new TAction(['ColaboradorView', 'onReload']), 'fa:times red');
- // Script JavaScript para aplicar a máscara
- $script = new TElement('script');
- $script->type = 'text/javascript';
- $script->add("
- $(document).ready(function() {
- // Função para aplicar a máscara
- function applyMask(mask, size) {
- $('#cpf_cnpj').mask(mask).attr('maxlength', size);
- }
- // Aplica a máscara inicial com base no valor padrão do tipo de pessoa
- var initialTipo = $('input[name=\"pessoa_tipo\"]:checked').val();
- var initialMask = (initialTipo == 'F') ? '999.999.999-99' : '99.999.999/9999-99';
- var initialSize = (initialTipo == 'F') ? 14 : 18;
- applyMask(initialMask, initialSize);
- // Altera a máscara quando o tipo de pessoa for alterado
- $('input[name=\"pessoa_tipo\"]').on('change', function() {
- var tipo = $('input[name=\"pessoa_tipo\"]:checked').val();
- var mask = (tipo == 'F') ? '999.999.999-99' : '99.999.999/9999-99';
- var size = (tipo == 'F') ? 14 : 18;
- // Limpa o campo antes de aplicar a nova máscara
- $('#cpf_cnpj').val('').trigger('change');
- // Aplica a nova máscara
- applyMask(mask, size);
- });
- });
- ");
- $this->form->add($script);
- // Adiciona o formulário à página
- parent::add($this->form);
- }
- }
- ?>
Alguém já passou por isso? Podem me ajudar?
Att.
Ricardo Almeida