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. // Script JavaScript para aplicar a máscara
  46. $script = new TElement('script');
  47. $script->type = 'text/javascript';
  48. $script->add("
  49. $(document).ready(function() {
  50. // Função para aplicar a máscara
  51. function applyMask(mask, size) {
  52. $('#cpf_cnpj').mask(mask).attr('maxlength', size);
  53. }
  54. // Aplica a máscara inicial com base no valor padrão do tipo de pessoa
  55. var initialTipo = $('input[name=\"pessoa_tipo\"]:checked').val();
  56. var initialMask = (initialTipo == 'F') ? '999.999.999-99' : '99.999.999/9999-99';
  57. var initialSize = (initialTipo == 'F') ? 14 : 18;
  58. applyMask(initialMask, initialSize);
  59. // Altera a máscara quando o tipo de pessoa for alterado
  60. $('input[name=\"pessoa_tipo\"]').on('change', function() {
  61. var tipo = $('input[name=\"pessoa_tipo\"]:checked').val();
  62. var mask = (tipo == 'F') ? '999.999.999-99' : '99.999.999/9999-99';
  63. var size = (tipo == 'F') ? 14 : 18;
  64. // Limpa o campo antes de aplicar a nova máscara
  65. $('#cpf_cnpj').val('').trigger('change');
  66. // Aplica a nova máscara
  67. applyMask(mask, size);
  68. });
  69. });
  70. ");
  71. $this->form->add($script);
  72. // Adiciona o formulário à página
  73. parent::add($this->form);
  74. }
  75. }
  76. ?>

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)