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:
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:
<?phpclass 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