Lançado Adianti Framework 7.6!
Clique aqui para saber mais
TEntry setMask in runtime Olá, sou novo no framework e, na verdade estou antecipando os estudos antes da chegada do livro, me deparei com uma situação que não consegui solver ainda. Tenho um campo TEntry para telefone e com o incremento do nono dígito, ficou diferente a máscara para telefones fixos e móveis, a mesma coisa que acontece com cpf e cnpj. Então gostaria de ao alterar o tipo de telefone setar a máscara....
LF
TEntry setMask in runtime  
Olá, sou novo no framework e, na verdade estou antecipando os estudos antes da chegada do livro, me deparei com uma situação que não consegui solver ainda. Tenho um campo TEntry para telefone e com o incremento do nono dígito, ficou diferente a máscara para telefones fixos e móveis, a mesma coisa que acontece com cpf e cnpj. Então gostaria de ao alterar o tipo de telefone setar a máscara. Vi que isto funciona bem no método Reload do TCombo, mas não achei semelhante no TEntry. Gostaria de saber se alguém já tentou isto, se conseguiu, como fez.

Suprimi aqui no código a parte da declaração do construtor e do form, mas está tudo correto, os campos aparecem normalmente... Só coloquei as declarações dos campos e a ideia do método onChangeTipo.

//Create the field telefone_tipo and add to form
$telefone_tipo = new TCombo('telefone_tipo');
$this->form->addQuickField('Tipo', $telefone_tipo, 200);

//Create the field telefone_numero and add to form
$telefone_numero = new TEntry('telefone_numero');
$this->form->addQuickField('Número', $telefone_numero, 200);

// add items to telefone_tipo
$telefone_tipo->addItems(array('Celular' => 'Celular', 'Fixo' => 'Fixo'));

// set exit action for input_exit
$change_tipo = new TAction(array($this, 'onChangeTipo'));
$telefone_tipo->setChangeAction($change_tipo);


Método onChangeTipo
public static function onChangeTipo($param) {
if ($param['telefone_tipo'] === 'Fixo'):
//insert mask
else:
//insert mask to mobile
endif;
}

Se puderem me ajudar, ficarei feliz... muito feliz

Curso completo Meu Negócio Pronto
Use para si, ou transforme em um negócio: Inclui aulas e códigos-fontes
Gestor de conteúdo (SITE) + Loja Virtual (E-Commerce) + Emissor de Notas para infoprodutos


Meu negócio pronto Quero me inscrever agora!

Comentários (4)


MG

Neste caso deverá usar javascript.

Veja um exemplo de como adicionar comportamentos js

  1. <?php
  2.         $script = new TElement('script'); 
  3.         $script->type 'text/javascript';
  4.         $javascript 
  5.             $(document).on('change','select[name=\"tipopessoa_id\"]' , function(event){
  6.                 //alert('Entrou');
  7.                 $('input[name=\"cpfcnpj\"]').val('');
  8.                
  9.                 $('select[name=\"tipopessoa_id\"] > option:selected').each(function(){
  10.                     tipoPessoa = $(this).text();
  11.                 });
  12.                 if(tipoPessoa.toLowerCase() == 'física') {
  13.                     $('input[name=\"cpfcnpj\"]').val('');
  14.                     $('input[name=\"cpfcnpj\"]').attr({onkeypress:'return tentry_mask(this,event,\"999.999.999-99\")'});                        
  15.                  }
  16.                  if(tipoPessoa.toLowerCase() == 'jurídica') {
  17.                      $('input[name=\"cpfcnpj\"]').val('');
  18.                      $('input[name=\"cpfcnpj\"]').attr({onkeypress:'return tentry_mask(this,event,\"99.999.999/9999-99\")'});                    
  19.                   }
  20.             });";
  21.         $script->add($javascript); 
  22. ?>
FF

Olá Leondas Fernandes
Conseguiu resolver este problema estou passando pelo mesmo. O que foi postado pelo Marcelo como exemplo é para campos que possuem nome e id fixos já nesse nosso problema os mesmos variam pois são vetoriais e não estou conseguindo atribuir a mascara aos TEntry de acordo com o indice escolhido no TCombo.
Estou precisando de mais orientação e ajuda.
DD

bom dia, conseguiram resolver esta situação?

eu já testei usando dois campos, um para celular e outro para fixo, consigo dar hide/show dos campos mas não descobri ainda porque ele perde o setmask()

meu código está assim:

// creates the form
$this->form = new TForm('form_Pessoas');
$this->form->class = 'tform'; // change CSS class

$fone_particular_oper = new TCombo('fone_particular_oper');
$fone_profissional_fixo = new TEntry('fone_profissional_fixo');
$fone_profissional_cel = new TEntry('fone_profissional_cel');

$fone_profissional_oper->setSize(80);
$fone_profissional_fixo->setSize(130); $fone_profissional_fixo->setMask('99 9999 9999');
$fone_profissional_fixo->id = 'fone_prof_f';
$fone_profissional_cel->setSize(130); $fone_profissional_cel->setMask('99 99999 9999');
$fone_profissional_cel->id = 'fone_prof_c';

// define the action for fone_profissional_oper
$change_action = new TAction(array($this, 'onChangeOperComercial'));
$fone_profissional_oper->setChangeAction($change_action);

$subtable->addRowSet(new TLabel('Cidade'), array($ref_cidade, $cidade_nome) );
$rowfoner = $subtable->addRowSet(new TLabel('Fone Residencial'), array($fone_particular_oper, $fone_particular_fixo, $fone_particular_cel, new TLabel('Fone Comercial'), $fone_profissional_oper, $fone_profissional_fixo, $fone_profissional_cel, $lb_fone_prof_f, $lb_fone_prof_c) );
$rowfoner->class = 'tformrow';

public static function onChangeOperComercial($param)
{
if ($param['fone_particular_oper'] == 'OI Fixo' OR $param['fone_particular_oper'] == 'NET'){
TScript::create("$('[id=fone_prof_f]').show();");
TScript::create("$('[id=fone_prof_c]').hide();");
}else{
TScript::create("$('[id=fone_prof_f]').hide();");
TScript::create("$('[id=fone_prof_c]').show();");
}
}

public function onEdit( $param )
{
try
{
if (isset($param['key']))
{
if ($pessoa->fone_profissional_oper == 'OI Fixo' OR $pessoa->fone_profissional_oper == 'NET'){
$pessoa->fone_profissional_fixo = $pessoa->fone_profissional;
TScript::create("$('[id=fone_prof_f]').show();");
TScript::create("$('[id=fone_prof_c]').hide();");
}else{
$pessoa->fone_profissional_cel = $pessoa->fone_profissional;
TScript::create("$('[id=fone_prof_f]').hide();");
TScript::create("$('[id=fone_prof_c]').show();");
}
}
}
}

lembrad que ele oculta/exibe o campo certo só perde a maskara.

DD

bom dia, conseguiram resolver esta situação?

eu já testei usando dois campos, um para celular e outro para fixo, consigo dar hide/show dos campos mas não descobri ainda porque ele perde o setmask()

meu código está assim:

// creates the form
$this->form = new TForm('form_Pessoas');
$this->form->class = 'tform'; // change CSS class

$fone_particular_oper = new TCombo('fone_particular_oper');
$fone_profissional_fixo = new TEntry('fone_profissional_fixo');
$fone_profissional_cel = new TEntry('fone_profissional_cel');

$fone_profissional_oper->setSize(80);
$fone_profissional_fixo->setSize(130); $fone_profissional_fixo->setMask('99 9999 9999');
$fone_profissional_fixo->id = 'fone_prof_f';
$fone_profissional_cel->setSize(130); $fone_profissional_cel->setMask('99 99999 9999');
$fone_profissional_cel->id = 'fone_prof_c';

// define the action for fone_profissional_oper
$change_action = new TAction(array($this, 'onChangeOperComercial'));
$fone_profissional_oper->setChangeAction($change_action);

$subtable->addRowSet(new TLabel('Cidade'), array($ref_cidade, $cidade_nome) );
$rowfoner = $subtable->addRowSet(new TLabel('Fone Residencial'), array($fone_particular_oper, $fone_particular_fixo, $fone_particular_cel, new TLabel('Fone Comercial'), $fone_profissional_oper, $fone_profissional_fixo, $fone_profissional_cel, $lb_fone_prof_f, $lb_fone_prof_c) );
$rowfoner->class = 'tformrow';

public static function onChangeOperComercial($param)
{
if ($param['fone_particular_oper'] == 'OI Fixo' OR $param['fone_particular_oper'] == 'NET'){
TScript::create("$('[id=fone_prof_f]').show();");
TScript::create("$('[id=fone_prof_c]').hide();");
}else{
TScript::create("$('[id=fone_prof_f]').hide();");
TScript::create("$('[id=fone_prof_c]').show();");
}
}

public function onEdit( $param )
{
try
{
if (isset($param['key']))
{
if ($pessoa->fone_profissional_oper == 'OI Fixo' OR $pessoa->fone_profissional_oper == 'NET'){
$pessoa->fone_profissional_fixo = $pessoa->fone_profissional;
TScript::create("$('[id=fone_prof_f]').show();");
TScript::create("$('[id=fone_prof_c]').hide();");
}else{
$pessoa->fone_profissional_cel = $pessoa->fone_profissional;
TScript::create("$('[id=fone_prof_f]').hide();");
TScript::create("$('[id=fone_prof_c]').show();");
}
}
}
}

lembrado que ele oculta/exibe o campo certo só perde a maskara.