Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Problemas com id x setId x setMask Salve Amigos, Ao tentar atribuir um ID numa classe TEntry (que tem setMask defindo também) com o objetivo de usar este ID num javascript, percebi que o simples fato de definir este ID, está desabilitando o recurso do setMask. Como exemplo e para tirar todas as dúvidas sobre algo de errado na minha aplicação teste, peguei o exemplo de uso de mascaras no TUTOR -> "FormMaskView" e inclui u...
PN
Problemas com id x setId x setMask  
Salve Amigos,

Ao tentar atribuir um ID numa classe TEntry (que tem setMask defindo também) com o objetivo de usar este ID num javascript, percebi que o simples fato de definir este ID, está desabilitando o recurso do setMask.

Como exemplo e para tirar todas as dúvidas sobre algo de errado na minha aplicação teste, peguei o exemplo de uso de mascaras no TUTOR -> "FormMaskView" e inclui um simples id no primeiro campo e tudo ferrou !! ou seja, a mascara não funcionou...

obs. Antes que alguém diga que ao invés do ->id porque eu não usei o setId->, então lhes digo que, por exempo, para o metodo "getElementById" no javascritp, este não funciona, somente se definir o ->id !!!

Sendo assim, alguém já passou por isso e/ou pode me dar uma luz ? pois será inevitável eu usar um javascript e este funcionado vai significar eu perder o setMask e não quero fazer artificios mirabolantes e etc para que a mascara volte a funcione na marreta.

function __construct()
{
parent::__construct();

// create the form
$this->form = new BootstrapFormBuilder;
$this->form->setFormTitle(_t('Input masks'));

// create the form fields
$element1 = new TEntry('element1');
$element1->id = 'teste';
$element2 = new TEntry('element2');
$element3 = new TEntry('element3');
$element4 = new TEntry('element4');
$element5 = new TEntry('element5');
$element6 = new TEntry('element6');
$element7 = new TEntry('element7');
$element8 = new TEntry('element8');
$element9 = new TEntry('element9');
$element10= new TEntry('element10');
$element11= new TEntry('element11');
$element12= new TEntry('element12');
$element13= new TEntry('element13');
$element14= new TEntry('element14');
$element15= new TEntry('element15');

$element1->setMask('99.999-999');
.......................
......................

Abraços,

Paulo

Pacotão Dominando o Adianti Framework 7
O material mais completo de treinamento do Framework.
Curso em vídeo aulas + Livro completo + Códigos fontes do projeto ERPHouse.
Conteúdo Atualizado! Versão 7.4


Dominando o Adianti 7 Quero me inscrever agora!

Comentários (4)


NR

Você está usando a última versão do framework?

Testei aqui com setId e não tive problemas, funcionou a máscara e também o "getElementById".
PN

Bom dia Nataniel,

Meu caro, para sanar de vez esta dúvida, baixei novamente o template 7.3 e fiz o seguinte teste:

1) No Cadastro de Preferências, inclui uma mascara no campo User, como visto abaixo, testei e a mascara funcionou de acordo e como deve ser.

// cria os campos do formulário
$mail_domain = new TEntry('mail_domain');
$smtp_auth = new TCombo('smtp_auth');
$smtp_host = new TEntry('smtp_host');
$smtp_port = new TEntry('smtp_port');

$smtp_user = new TEntry('smtp_user');
$smtp_user->setMask('999.999.999-99');
// $smtp_user->id = 'teste';

2) Depois atribui um "id", como visto abaixo, testei novamente e a mascara não funciona mais.

// cria os campos do formulário
$mail_domain = new TEntry('mail_domain');
$smtp_auth = new TCombo('smtp_auth');
$smtp_host = new TEntry('smtp_host');
$smtp_port = new TEntry('smtp_port');

$smtp_user = new TEntry('smtp_user');
$smtp_user->setMask('999.999.999-99');
$smtp_user->id = 'testeId';

3) Depois implementei este simples script:

$script = "

document.getElementById("testeId").onfocus = function() {login_OnFocus()};
function login_OnFocus()
{

alert("Funcionou !");

}

";

TScript::create($script, TRUE); // gera o script e TRUE informa que deverá ser mostrado.

Vamos então ao dilema:

a) Se uso "->id", o script funciona perfeito, mas perco a mascara

b) Se uso "->setId, a mascara funciona perfeita, mas o script não funciona


Agora, caso vc consiga simular aí com estas mesmas condições e tudo sair de acordo, vixe !!! aí não sei o que possa estar acontecendo e/ou estar fazendo algo bem errado.

Uso: Ubuntu 20.10 / PHP Version 7.4.14 / Apache 2.4.46 / Postgres 13

Abraço,

Paulo
NR

Funcionando sem problemas aqui:
  1. <?php
  2.  $smtp_user->setMask('999.999.999-99');
  3.  $smtp_user->setId('testeId');
  4.  $script "
  5.             document.getElementById('testeId').onfocus = function() {login_OnFocus()};
  6.             function login_OnFocus()
  7.             {
  8.                 alert('Funcionou !');
  9.             }";
  10.  TScript::create($scriptTRUE);
  11. ?>
PN

Salve Nataniel,

Consegui perceber aonde eu estava errando !!!

A sintaxe correta do comando deve ser assim:

$smtp_user->setId('testeId');

E não assim, como eu estava usando:

$smtp_user->setId = 'testeId';

Agora a coisa andou e tudo ficou uma maravilha !!

Obrigado pela atenção, desculpe o incomodo e um grande abraço

Paulo Nobre