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 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 (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. $('select[name=\"tipo_pessoa\"] > option:selected').each(function(){
  9. tipoPessoa = $(this).text();
  10. });
  11. if(tipoPessoa.toLowerCase() == 'física') {
  12. $('input[name=\"cpf_cnpj\"]').val('');
  13. $('input[name=\"cpf_cnpj\"]').attr({onkeypress:'return tentry_mask(this,event,\"999.999.999-99\")'});
  14. }
  15. if(tipoPessoa.toLowerCase() == 'jurídica') {
  16. $('input[name=\"cpf_cnpj\"]').val('');
  17. $('input[name=\"cpf_cnpj\"]').attr({onkeypress:'return tentry_mask(this,event,\"99.999.999/9999-99\")'});
  18. }
  19. });";
  20. $script->add($javascript);
  21. $tableScriptPessoa = new TTable;
  22. $tableScriptPessoa->addRow()->addCell($script);
  23. ?>

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