Lançado Adianti Framework 7.6!
Clique aqui para saber mais
Alterar a mascara de um TEntry conforme selecionada uma opção. Bom dia... Tenho um formulário de cadastro de clientes, onde há um campo (chamado número) que eu quero que tenha uma mascara conforme for selecionado no campo tipo de documento, ou seja, a minha ideia é quando o campo número receber foco o seu "setMask" seja alterado de acordo com o campo tipo de documento, eu ensaiei o seguinte código: // detail fields $detail_id ...
WF
Alterar a mascara de um TEntry conforme selecionada uma opção.  
Bom dia...

Tenho um formulário de cadastro de clientes, onde há um campo (chamado número) que eu quero que tenha uma mascara conforme for selecionado no campo tipo de documento, ou seja, a minha ideia é quando o campo número receber foco o seu "setMask" seja alterado de acordo com o campo tipo de documento, eu ensaiei o seguinte código:
// detail fields
$detail_id = new THidden('detail_id');
$detail_tipodocumento = new TDBCombo('detail_tipodocumento','bancohip','tiposdocumentos','id','descricao');
$detail_numero = new TEntry('detail_numero');
$detail_scaner = new TText('detail_scaner');

$detail_tipodocumento->onBlur = 'mascara()';

TScript::create('mascara = function() {
if (form_cadastrodeclientes.detail_tipodocumento.value = 1)
{
//$detail_numero ->setMask ((99)9999-9999);
form_cadastrodeclientes.detail_numero.value = parseFloat(23);
}
};');
Eu quero é manipular o setMask, mas não sei como escrever o código, neste exemplo eu apenas consigo colocar o número 23 no campo.

Se alguém tiver uma outra solução é bem vinda, obrigado.

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 (10)


MG

Usa javascript

Veja um exemplo que uso para formatar CPF/CNPJ.

O princípio é o mesmo, apenas mude o campo (seletor) e a máscara, veja:

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

MG

Não esqueca de uar "escape"

$script = new TElement('script'); $script->type = 'text/javascript'; $javascript = " $(document).on('change','select[name=\"tipo_pessoa\"]' , function(event){ //alert('Entrou'); $('input[name=\"cpf_cnpj\"]').val(''); $('select[name=\"tipo_pessoa\"] > option:selected').each(function(){ tipoPessoa = $(this).text(); }); if(tipoPessoa.toLowerCase() == 'física') { $('input[name=\"cpf_cnpj\"]').val(''); $('input[name=\"cpf_cnpj\"]').attr({onkeypress:'return tentry_mask(this,event,\"999.999.999-99\")'}); } if(tipoPessoa.toLowerCase() == 'jurídica') { $('input[name=\"cpf_cnpj\"]').val(''); $('input[name=\"cpf_cnpj\"]').attr({onkeypress:'return tentry_mask(this,event,\"99.999.999/9999-99\")'}); } });"; $script->add($javascript); $tableScriptPessoa = new TTable; $tableScriptPessoa->addRow()->addCell($script);
MG

Ops! não foi, segue agora em plain/text

$script = new TElement('script');
$script->type = 'text/javascript';
$javascript = "
$(document).on('change','select[name="tipo_pessoa"]' , function(event){
//alert('Entrou');
$('input[name="cpf_cnpj"]').val('');

$('select[name="tipo_pessoa"] > option:selected').each(function(){
tipoPessoa = $(this).text();
});
if(tipoPessoa.toLowerCase() == 'física') {
$('input[name="cpf_cnpj"]').val('');
$('input[name="cpf_cnpj"]').attr({onkeypress:'return tentry_mask(this,event,"999.999.999-99")'});
}
if(tipoPessoa.toLowerCase() == 'jurídica') {
$('input[name="cpf_cnpj"]').val('');
$('input[name="cpf_cnpj"]').attr({onkeypress:'return tentry_mask(this,event,"99.999.999/9999-99")'});
}
});";
$script->add($javascript);
$tableScriptPessoa = new TTable;
$tableScriptPessoa->addRow()->addCell($script);
WF

Ola, obrigado, vou tentar implementar.
WF

Nada funcionou, vou colocar o código completo do formulário, se puder ajudar fico agradecido se não tiver como realizar essa operação vou deixar pra lá.

  1. <?php
  2. /**
  3.  * cadastrodeclientes Master/Detail
  4.  * @author  <your name here>
  5.  */
  6. class cadastrodeclientes extends TPage
  7. {
  8.     protected $form// form
  9.     protected $formFields;
  10.     protected $detail_list;
  11.     
  12.     /**
  13.      * Page constructor
  14.      */
  15.     public function __construct()
  16.     {
  17.         parent::__construct();
  18.         
  19.         // creates the form
  20.         $this->form = new TForm('form_cadastrodeclientes');
  21.         $this->form->class 'tform'// CSS class
  22.         $this->form->style 'max-width:100%'// style
  23.         parent::include_css('app/resources/custom-frame.css');
  24.         
  25.         $table_master = new TTable;
  26.         $table_master->width '100%';
  27.         
  28.         $table_master->addRowSet( new TLabel('Cadastro de clientes e fornecedores'), '''')->class 'tformtitle';
  29.         
  30.         // add a table inside form
  31.         $table_general   = new TTable;
  32.         $table_contatos  = new TTable;
  33.         $table_detail    = new TTable;
  34.         $table_general   -> width '100%';
  35.         $table_contatos  -> width '100%';
  36.         $table_detail    -> width '100%';
  37.         
  38.         $frame_general = new TFrame;
  39.         $frame_general->setLegend('Informações básicas');
  40.         $frame_general->style 'background:whiteSmoke';
  41.         $frame_general->add($table_general);
  42.         
  43.         $frame_contatos = new TFrame;
  44.         $frame_contatos->setLegend('Contatos');
  45.         $frame_contatos->style 'background:whiteSmoke';
  46.         $frame_contatos->add($table_contatos);
  47.  
  48.         $table_master->addRow()->addCell$frame_general  ); // ->colspan=2
  49.         $table_master->addRow()->addCell$frame_contatos ); // ->colspan=2
  50.         
  51.         $row $table_master->addRow();
  52.         $row->addCell$table_detail );
  53.             
  54.         $this->form->add($table_master);
  55.                 
  56.         // master fields
  57.         $id = new TEntry('id');
  58.         $status_id         = new TDBCombo('status_id','bancohip','status','id','descricao'); //TEntry('status_id');
  59.         $tipodecadastro_id = new TDBCombo('tipodecadastro_id','bancohip','tipodecadastro','id','descricao'); //TEntry('tipodecadastro_id');
  60.         $nome = new TEntry('nome');
  61.         $profissao = new TEntry('profissao');
  62.         $email = new TEntry('email');
  63.         $telefone = new TEntry('telefone');
  64.         $celular = new TEntry('celular');
  65.         $descricaodavenda = new TText('descricaodavenda');
  66.         $corretor_id = new TEntry('corretor_id');
  67.         $alteracao = new TEntry('alteracao');
  68.         
  69.         if (!empty($id))
  70.         {
  71.             $id->setEditable(FALSE);
  72.         }
  73.         
  74.         // Tabela de contatos 
  75.         $contactos = new TMultiField('contactos');
  76.        
  77.         // Tamanho de alguns campos
  78.         $nome -> setSize(300);
  79.         $email-> setSize(300);
  80.         
  81.         //
  82.         $contactos->setHeight(100);
  83.         $contactos->setOrientation('horizontal');
  84.         $contactos->setClass('contatos');
  85.         $contactos->addField('tipocontato' ,'Tipo de contato',new TDBCombo('tipocontato','bancohip','tipodecontatos','nome','nome'),200);
  86.         $contactos->addField('nomeounumero','Texto ou número',new TEntry('nomeounumero'),200);
  87.         
  88.         // detail fields
  89.         $detail_id            = new THidden('detail_id');
  90.         $detail_tipodocumento = new TDBCombo('detail_tipodocumento','bancohip','tiposdocumentos','id','descricao');
  91.         $detail_numero        = new TEntry('detail_numero');
  92.         $detail_scaner        = new TText('detail_scaner');
  93.         
  94.         //Script para controle das máscaras
  95.         
  96.         $script = new TElement('script'); 
  97.         $script->type 'text/javascript';
  98.         $javascript 
  99.             $(document).on('change','select[name='detail_tipodocumento']' , function(event){
  100.                 alert('Entrou');
  101.                 $('input[name='detail_numero']').val('');
  102.                
  103.                 $('select[name='detail_tipodocumento'] > option:selected').each(function(){
  104.                     tipoPessoa = $(this).text();
  105.                 });
  106.                 if(detail_tipodocumento.toLowerCase() == 1) {
  107.                     $('input[name='detail_numero']').val('');
  108.                     $('input[name='detail_numero']').attr({onkeypress:'return tentry_mask(this,event,'999.999.999-99')'});                        
  109.                  }
  110.                  if(detail_tipodocumento.toLowerCase() == 2) {
  111.                      $('input[name='detail_numero']').val('');
  112.                      $('input[name='detail_numero']').attr({onkeypress:'return tentry_mask(this,event,'99.999.999/9999-99')'});                    
  113.                   }
  114.             });";
  115.         $script->add($javascript); 
  116.         $tableScriptPessoa = new TTable;
  117.         $tableScriptPessoa->addRow()->addCell($script);
  118.      
  119.              
  120.         /** samples
  121.          $this->form->addQuickFields('Date', array($date1, new TLabel('to'), $date2)); // side by side fields
  122.          $fieldX->addValidation( 'Field X', new TRequiredValidator ); // add validation
  123.          $fieldX->setSize( 100, 40 ); // set size
  124.          **/
  125.          
  126.         // Coloca os campos em mausculas e minusculas
  127.         $nome               ->style "text-transform: uppercase";
  128.         $profissao          ->style "text-transform: uppercase";
  129.         $email              ->style "text-transform: lowercase";
  130.         
  131.         //Validações, obrigatóriedades e mascara dos campos
  132.         //$proxcontato        ->setMask('dd/mm/yyyy');
  133.         $alteracao          ->setEditable(FALSE);
  134.         $corretor_id        ->setEditable(FALSE);
  135.         $email              ->addValidation('E-mail'          , new TEmailValidator); 
  136.         $telefone           ->setMask('(99)9999-9999');
  137.         $celular            ->setMask('(99)99999-9999');
  138.         //$acompanhar         ->addValidation('Acompanhar'      , new TRequiredValidator); 
  139.         $nome               ->addValidation('Nome'            , new TRequiredValidator); 
  140.         $status_id          ->addValidation('Status'          , new TRequiredValidator);
  141.  
  142.  
  143.         
  144.         // master
  145.         $table_general->addRowSet( new TLabel('Código'), [$id$l1 = new TLabel('Status'), $status_id ] );
  146.         $table_general->addRowSet( new TLabel('Tipo de cliente'), [$tipodecadastro_id$l2 = new TLabel('Nome'), $nome] );
  147.         $table_general->addRowSet( new TLabel('Profissão'), [$profissao$l3= new TLabel('Email'), $email ]);
  148.         $table_general->addRowSet( new TLabel('Telefone'),  [$telefone$l6= new TLabel('Celular'), $celular]);
  149.         $table_general->addRowSet( new TLabel('Venda'),$descricaodavenda);
  150.         $table_general->addRowSet( new TLabel('Corretor'),  [$corretor_id$l5 = new TLabel('Alteração'), $alteracao ] );
  151.         
  152.         // Tamanho das TLabel para alinhar o formulário
  153.         $l1->setSize(100);
  154.         $l2->setSize(100);
  155.         $l3->setSize(100);
  156.         $l5->setSize(100);
  157.         $l6->setSize(100);
  158.         // Adiciona a tabela de contatos ao formulário
  159.         $table_contatos->addRowSet($contactos);
  160.         
  161.         // detail
  162.         $frame_details = new TFrame();
  163.         $frame_details->setLegend('Documentação');
  164.         $row $table_detail->addRow();
  165.         $row->addCell($frame_details);
  166.         
  167.         $btn_save_detail = new TButton('btn_save_detail');
  168.         $btn_save_detail->setAction(new TAction(array($this'onSaveDetail')), 'Register');
  169.         $btn_save_detail->setImage('fa:save');
  170.         
  171.         $table_details = new TTable;
  172.         $frame_details->add($table_details);
  173.         
  174.         $table_details->addRowSet''$detail_id );
  175.         $table_details->addRowSet( new TLabel('Tipo de documento'), $detail_tipodocumento );
  176.         $table_details->addRowSet( new TLabel('Número'), $detail_numero );
  177.         $table_details->addRowSet( new TLabel('Scaner'), $detail_scaner );
  178.         
  179.         $table_details->addRowSet$btn_save_detail );
  180.         
  181.         // Grid do formulário - área de cadastro dos documentos
  182.         $this->detail_list = new TQuickGrid;
  183.         $this->detail_list->setHeight175 );
  184.         $this->detail_list->makeScrollable();
  185.         $this->detail_list->disableDefaultClick();
  186.         $this->detail_list->addQuickColumn('Editar''edit''left'20);
  187.         $this->detail_list->addQuickColumn('Excluir''delete''left'20);
  188.         
  189.         // items
  190.         $this->detail_list->addQuickColumn('Tipo de documento''tipodocumento''left'200);
  191.         $this->detail_list->addQuickColumn('Número''numero''left'200);
  192.         //$this->detail_list->addQuickColumn('Scaner', 'scaner', 'left', 200);
  193.         $this->detail_list->createModel();
  194.         
  195.         $row $table_detail->addRow();
  196.         $row->addCell($this->detail_list);
  197.         
  198.         // create an action button (save)
  199.         $save_button=new TButton('save');
  200.         $save_button->setAction(new TAction(array($this'onSave')), _t('Save'));
  201.         $save_button->setImage('ico_save.png');
  202.         // create an new button (edit with no parameters)
  203.         $new_button=new TButton('new');
  204.         $new_button->setAction(new TAction(array($this'onClear')), _t('New'));
  205.         $new_button->setImage('ico_new.png');
  206.         
  207.         // define form fields
  208.         $this->formFields   = array($id,$status_id,$tipodecadastro_id,$nome,$profissao,$email,$telefone,$celular,$descricaodavenda,$corretor_id,$alteracao,$detail_tipodocumento,$detail_numero,$detail_scaner);
  209.         $this->formFields[] = $btn_save_detail;
  210.         $this->formFields[] = $save_button;
  211.         $this->formFields[] = $new_button;
  212.         $this->formFields[] = $detail_id;
  213.         $this->form->setFields$this->formFields );
  214.         
  215.         $table_master->addRowSet( array($save_button$new_button), '''')->class 'tformaction'// CSS class
  216.         
  217.         // create the page container
  218.         $container = new TVBox;
  219.         $container->style 'width: 100%';
  220.         $container->add(new TXMLBreadCrumb('menu.xml'__CLASS__));
  221.         $container->add($this->form);
  222.         parent::add($container);
  223.         
  224.         
  225.     }
  226.     
  227.  ////////////////////////////////////////////////// funções ficam abaixo ///////////////////////////////////////
  228.    
  229.    
  230.    
  231.     /**
  232.      * Clear form
  233.      * @param $param URL parameters
  234.      */
  235.     public function onClear($param)
  236.     {
  237.         $this->form->clear(TRUE);
  238.         TSession::setValue(__CLASS__.'_items', array());
  239.         $this->onReload$param );
  240.     }
  241.     
  242.     /**
  243.      * Save an item from form to session list
  244.      * @param $param URL parameters
  245.      */
  246.     public function onSaveDetail$param )
  247.     {
  248.         try
  249.         {
  250.             TTransaction::open('bancohip');
  251.             $data $this->form->getData();
  252.             
  253.             /** validation sample
  254.             if (! $data->fieldX)
  255.                 throw new Exception('The field fieldX is required');
  256.             **/
  257.             
  258.             $items TSession::getValue(__CLASS__.'_items');
  259.             $key = empty($data->detail_id) ? 'X'.mt_rand(10000000001999999999) : $data->detail_id;
  260.             
  261.             $items$key ] = array();
  262.             $items$key ]['id'] = $key;
  263.             $items$key ]['tipodocumento'] = $data->detail_tipodocumento;
  264.             $items$key ]['numero'] = $data->detail_numero;
  265.             $items$key ]['scaner'] = $data->detail_scaner;
  266.             
  267.             TSession::setValue(__CLASS__.'_items'$items);
  268.             
  269.             // clear detail form fields
  270.             $data->detail_id '';
  271.             $data->detail_tipodocumento '';
  272.             $data->detail_numero '';
  273.             $data->detail_scaner '';
  274.             
  275.             TTransaction::close();
  276.             $this->form->setData($data);
  277.             
  278.             $this->onReload$param ); // reload the items
  279.         }
  280.         catch (Exception $e)
  281.         {
  282.             $this->form->setData$this->form->getData());
  283.             new TMessage('error'$e->getMessage());
  284.         }
  285.     }
  286.     
  287.     /**
  288.      * Load an item from session list to detail form
  289.      * @param $param URL parameters
  290.      */
  291.     public function onEditDetail$param )
  292.     {
  293.         $data $this->form->getData();
  294.         
  295.         // read session items
  296.         $items TSession::getValue(__CLASS__.'_items');
  297.         
  298.         // get the session item
  299.         $item $items$param['item_key'] ];
  300.         
  301.         $data->detail_id $item['id'];
  302.         $data->detail_tipodocumento $item['tipodocumento'];
  303.         $data->detail_numero $item['numero'];
  304.         $data->detail_scaner $item['scaner'];
  305.         
  306.         // fill detail fields
  307.         $this->form->setData$data );
  308.     
  309.         $this->onReload$param );
  310.     }
  311.     
  312.     /**
  313.      * Delete an item from session list
  314.      * @param $param URL parameters
  315.      */
  316.     public function onDeleteDetail$param )
  317.     {
  318.         $data $this->form->getData();
  319.         
  320.         // reset items
  321.             $data->detail_tipodocumento '';
  322.             $data->detail_numero '';
  323.             $data->detail_scaner '';
  324.         
  325.         // clear form data
  326.         $this->form->setData$data );
  327.         
  328.         // read session items
  329.         $items TSession::getValue(__CLASS__.'_items');
  330.         
  331.         // delete the item from session
  332.         unset($items$param['item_key'] ] );
  333.         TSession::setValue(__CLASS__.'_items'$items);
  334.         
  335.         // reload items
  336.         $this->onReload$param );
  337.     }
  338.     
  339.     /**
  340.      * Load the items list from session
  341.      * @param $param URL parameters
  342.      */
  343.     public function onReload($param)
  344.     {
  345.         // read session items
  346.         $items TSession::getValue(__CLASS__.'_items');
  347.         
  348.         $this->detail_list->clear(); // clear detail list
  349.         $data $this->form->getData();
  350.         
  351.         if ($items)
  352.         {
  353.             $cont 1;
  354.             foreach ($items as $list_item_key => $list_item)
  355.             {
  356.                 $item_name 'prod_' $cont++;
  357.                 $item = new StdClass;
  358.                 
  359.                 // create action buttons
  360.                 $action_del = new TAction(array($this'onDeleteDetail'));
  361.                 $action_del->setParameter('item_key'$list_item_key);
  362.                 
  363.                 $action_edi = new TAction(array($this'onEditDetail'));
  364.                 $action_edi->setParameter('item_key'$list_item_key);
  365.                 
  366.                 $button_del = new TButton('delete_detail'.$cont);
  367.                 $button_del->class 'btn btn-default btn-sm';
  368.                 $button_del->setAction$action_del'' );
  369.                 $button_del->setImage('fa:trash-o red fa-lg');
  370.                 
  371.                 $button_edi = new TButton('edit_detail'.$cont);
  372.                 $button_edi->class 'btn btn-default btn-sm';
  373.                 $button_edi->setAction$action_edi'' );
  374.                 $button_edi->setImage('fa:edit blue fa-lg');
  375.                 
  376.                 $item->edit   $button_edi;
  377.                 $item->delete $button_del;
  378.                 
  379.                 $this->formFields$item_name.'_edit' ] = $item->edit;
  380.                 $this->formFields$item_name.'_delete' ] = $item->delete;
  381.                 
  382.                 // items
  383.                 $item->id $list_item['id'];
  384.                 $item->tipodocumento $list_item['tipodocumento'];
  385.                 $item->numero $list_item['numero'];
  386.                 $item->scaner $list_item['scaner'];
  387.                 
  388.                 $row $this->detail_list->addItem$item );
  389.                 $row->onmouseover='';
  390.                 $row->onmouseout='';
  391.             }
  392.             $this->form->setFields$this->formFields );
  393.         }
  394.         
  395.         $this->loaded TRUE;
  396.     }
  397.     
  398.     /**
  399.      * Load Master/Detail data from database to form/session
  400.      */
  401.     public function onEdit($param)
  402.     {
  403.         try
  404.         {
  405.             TTransaction::open('bancohip');
  406.             
  407.             if (isset($param['key']))
  408.             {
  409.                 $key $param['key'];
  410.                 
  411.                 $object = new pessoa($key);
  412.                 $items  documentacao::where('pessoa_id''='$key)->load();
  413.                 
  414.                 $session_items = array();
  415.                 foreach( $items as $item )
  416.                 {
  417.                     $item_key $item->id;
  418.                     $session_items[$item_key] = $item->toArray();
  419.                     $session_items[$item_key]['id'] = $item->id;
  420.                     $session_items[$item_key]['tipodocumento'] = $item->tipodocumento;
  421.                     $session_items[$item_key]['numero'] = $item->numero;
  422.                     $session_items[$item_key]['scaner'] = $item->scaner;
  423.                 }
  424.                 TSession::setValue(__CLASS__.'_items'$session_items);
  425.                 
  426.                 $this->form->setData($object); // fill the form with the active record data
  427.                 $this->onReload$param ); // reload items list
  428.                 TTransaction::close(); // close transaction
  429.             }
  430.             else
  431.             {
  432.                 $this->form->clear(TRUE);
  433.                 TSession::setValue(__CLASS__.'_items'null);
  434.                 $this->onReload$param );
  435.             }
  436.         }
  437.         catch (Exception $e// in case of exception
  438.         {
  439.             new TMessage('error'$e->getMessage());
  440.             TTransaction::rollback();
  441.         }
  442.     }
  443.     
  444.     /**
  445.      * Save the Master/Detail data from form/session to database
  446.      */
  447.     public function onSave()
  448.     {
  449.         try
  450.         {
  451.             // open a transaction with database
  452.             TTransaction::open('bancohip');
  453.             
  454.             $data $this->form->getData();
  455.             $master = new pessoa;
  456.             $master->fromArray( (array) $data);
  457.             $this->form->validate(); // form validation
  458.             
  459.             $master->store(); // save master object
  460.             // delete details
  461.             $old_items documentacao::where('pessoa_id''='$master->id)->load();
  462.             
  463.             $keep_items = array();
  464.             
  465.             // get session items
  466.             $items TSession::getValue(__CLASS__.'_items');
  467.             
  468.             if( $items )
  469.             {
  470.                 foreach( $items as $item )
  471.                 {
  472.                     if (substr($item['id'],0,1) == 'X' // new record
  473.                     {
  474.                         $detail = new documentacao;
  475.                     }
  476.                     else
  477.                     {
  478.                         $detail documentacao::find($item['id']);
  479.                     }
  480.                     $detail->tipodocumento  $item['tipodocumento'];
  481.                     $detail->numero  $item['numero'];
  482.                     $detail->scaner  $item['scaner'];
  483.                     $detail->pessoa_id $master->id;
  484.                     $detail->store();
  485.                     
  486.                     $keep_items[] = $detail->id;
  487.                 }
  488.             }
  489.             
  490.             if ($old_items)
  491.             {
  492.                 foreach ($old_items as $old_item)
  493.                 {
  494.                     if (!in_array$old_item->id$keep_items))
  495.                     {
  496.                         $old_item->delete();
  497.                     }
  498.                 }
  499.             }
  500.             TTransaction::close(); // close the transaction
  501.             
  502.             // reload form and session items
  503.             $this->onEdit(array('key'=>$master->id));
  504.             
  505.             new TMessage('info'TAdiantiCoreTranslator::translate('Record saved'));
  506.         }
  507.         catch (Exception $e// in case of exception
  508.         {
  509.             new TMessage('error'$e->getMessage());
  510.             $this->form->setData$this->form->getData() ); // keep form data
  511.             TTransaction::rollback();
  512.         }
  513.     }
  514.     
  515.     /**
  516.      * Show the page
  517.      */
  518.     public function show()
  519.     {
  520.         // check if the datagrid is already loaded
  521.         if (!$this->loaded AND (!isset($_GET['method']) OR $_GET['method'] !== 'onReload') )
  522.         {
  523.             $this->onReloadfunc_get_arg(0) );
  524.         }
  525.         parent::show();
  526.     }
  527. }
  528. </your>
MG

Um detalhe que não consegui que fosse colocado no forum.
Em volta dos id é preciso usar aspas duplas com "escape", você fez isso?
Outro detalhe, você chego a inspecionar o elemento "detail_tipodocumento"?
Você adicionou $tableScriptPessoa" ao form?

Eu zipei minha classe que está funcionando, baixe e veja como fiz (não esqueça de inspecionar o elemento para saber se está chegando o valor corretor para a comparação)!

www.mgservicosti.com.br/adianti/ClientesForm.class.php.zip


WF

Boa tarde...

Obrigado pela ajuda, nada funciona, já estou a um ano tentando realizar esse procedimento mas sem exito. Tenho outras coisas mais importantes pra fazer no sistema que estou fazendo. Essa parte eu desisto.
MG

Você chegou a executar a minha classe?
Veja alguns detalhes!
Você mante a captura do campo como "tipoPessoa", nas na comparação você usou o id do campo "detail_tipodocumento".

Outra coisa, você deve adicionar o $tableScriptPessoa no container antes do "parent::add($this->form);

Quando fizer estes ajustes, execute a página e inpecione o Combo "detail_tipodocumento', vá até o final da pagina e inpecione o script, veja se os valores dos options estão dentro dos parâmetros de comparação.

Outro detalhe o método.

Não desista, que garanto que funciona!

Como disse, tente executar o meu e verá!

Abraços e sucesso!
WF

Boa noite...

Obrigado pela ajuda, compreensão, estimulo e paciência com minha falta de conhecimento, consegui resolver o problema, há outros que preciso corrigir mas vou consultar meus estudos para resolver.

Deus abençoe, segue o código que resolveu o problema:

// Tabela de Documentação
$detail_id = new THidden('detail_id');
$detail_tipodocumento = new TDBCombo('detail_tipodocumento','bancohip','tiposdocumentos','id','descricao');
$detail_numero = new TEntry('detail_numero');
$detail_scaner = new TText('detail_scaner');
/* Mascara de entrada de dados para o tipo de documento
É comparado texto porque o input lê tela
e tela é texto
no switch coloque a palavra de comparação em minuscula
*/
$script = new TElement('script');
$script->type = 'text/javascript';
$javascript = "
$(document).on('change','select[name="detail_tipodocumento"]' , function(event){
//alert('Entrou');
$('input[name="detail_numero"]').val('');

$('select[name="detail_tipodocumento"] > option:selected').each(function(){
detail_tipodocumento = $(this).text();
});

switch(detail_tipodocumento.toLowerCase()){
case 'cpf':
$('input[name="detail_numero"]').val('');
$('input[name="detail_numero"]').attr({onkeypress:'return tentry_mask(this,event,"999.999.999-99")'});
break;

case 'cnpj':
$('input[name="detail_numero"]').val('');
$('input[name="detail_numero"]').attr({onkeypress:'return tentry_mask(this,event,"99.999.999/9999-99")'});
break;

default:
$('input[name="detail_numero"]').val('');
$('input[name="detail_numero"]').attr({onkeypress:'return tentry_mask(this,event,"99999999999999")'});
break
}
});";
$script->add($javascript);
$table_general->addRow()->addCell($script);
MG

Excelente, sucesso!