MP
Setvalue TCombo não executa javascript
Bom dia, neste codigo reproduzo a falha que estou tendo. O Setvalue definido no TCombo não formata o Tentry cpf_cnpj no carregamento do form. somente funciona depois de alterar o campo manualmente. Qual seria a forma correta para que o form carregue e já formate o campo com o valor aribuido no Setvalue?
- <?php
- /**
- * ClientesForm Form
- * @author <your name here>
- */
- class teste extends TPage
- {
- private $form; // form
-
-
- /**
- * Form constructor
- * @param $param Request
- */
- public function __construct()
- {
- parent::__construct();
-
- $this->form = new BootstrapFormBuilder;
- $this->form->setFormTitle('Clientes');
- $this->form->setName('form_clientes');
- $this->style = 'width: 100%';
-
-
- // campos
- $id = new TEntry('id');
- $tipoPessoa = new TCombo('tipo_pessoa');
- $cpf_cnpj = new TEntry('cpf_cnpj');
-
-
-
- // labels
- $lblTipoPessoa = new TLabel('Tipo Pessoa');
- $lblCpfCnpj = new TLabel('CPF/CNPJ');
-
- // config campos
- $tipoPessoa->setSize('30%');
- $tipoPessoa->id = 'tipo_pessoa';
-
- // validacoes
-
- // combos
- $tpPessoas = array(
- 'F' => 'Física',
- 'J' => 'Jurídica'
- );
- $tipoPessoa->addItems($tpPessoas);
- $tipoPessoa->setValue('F');
-
-
-
-
-
- $this->form->addFields([$lblTipoPessoa], [$tipoPessoa, $cpf_cnpj]);
-
-
-
- // adicionar acoes
- //******************************************************************
- //script para definir a mascara do cpf/cn
- $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);
- //*****************************************************************
-
- // vertical box container
- $container = new TVBox;
- $container->style = 'width: 90%';
- //$container->add(new TXMLBreadCrumb('menu.xml', __CLASS__));
- $container->add($this->form);
- $container->add($script);
-
-
- parent::add($container);
-
- }
- }
Você está criando um javascript manual no change do campo. Dessa forma o componente não tem como identificar que há um "gatilho" para executar. Para isso teria que utilizar a exit/change action, do mesmo modo que num post anterior seu.
Nataniel ou alguém que possa me ajudar.
Você poderia me mostrar como fazer isso no onedit? não estou conseguindo entender como chamar a função Javascript neste caso (exit / change). Obrigado!
public function onEdit($param)
{
//TButton::disableField('form_cadastro_pessoas', 'btn_salvar');
try
{
TTransaction::open('db_isis360');
$key = $param['id'];
if ($param['id'] == '')
{
TButton::enableField('form_cadastro_pessoas', 'btn_salvar');
TButton::disableField('form_cadastro_pessoas', 'btn_editar');
TEntry::enableField('form_cadastro_pessoas', 'cpf_cnpj');
TEntry::enableField('form_cadastro_pessoas', 'rg');
TEntry::enableField('form_cadastro_pessoas', 'nomerazao');
TEntry::enableField('form_cadastro_pessoas', 'nomesocialfantasia');
TEntry::enableField('form_cadastro_pessoas', 'emissor');
TCombo::enableField('form_cadastro_pessoas', 'genero');
TEntry::enableField('form_cadastro_pessoas', 'estadocivil');
TEntry::enableField('form_cadastro_pessoas', 'nascimento');
TEntry::enableField('form_cadastro_pessoas', 'grupo');
TEntry::enableField('form_cadastro_pessoas', 'observacao');
TEntry::enableField('form_cadastro_pessoas', 'inscricaoestadual');
TEntry::enableField('form_cadastro_pessoas', 'inscricaomunicipal');
TEntry::enableField('form_cadastro_pessoas', 'ieisento');
TEntry::enableField('form_cadastro_pessoas', 'suframa');
TEntry::enableField('form_cadastro_pessoas', 'dataabertura');
TEntry::enableField('form_cadastro_pessoas', 'naturezajuridica');
TEntry::enableField('form_cadastro_pessoas', 'porte');
TEntry::enableField('form_cadastro_pessoas', 'situacaocnpj');
TEntry::enableField('form_cadastro_pessoas', 'capitalsocial');
TEntry::enableField('form_cadastro_pessoas', 'cep');
TEntry::enableField('form_cadastro_pessoas', 'logradouro');
TEntry::enableField('form_cadastro_pessoas', 'numero');
TEntry::enableField('form_cadastro_pessoas', 'complemento');
TEntry::enableField('form_cadastro_pessoas', 'bairro');
TEntry::enableField('form_cadastro_pessoas', 'cidade');
TEntry::enableField('form_cadastro_pessoas', 'uf');
}
else
{
TButton::disableField('form_cadastro_pessoas', 'btn_salvar');
TButton::enableField('form_cadastro_pessoas', 'btn_editar');
}
$object = new tb_CadastroPessoas($key);
$this->form->setData( $object );
// var_dump($object);
self::onChangetipoPessoa( ['tipoPessoa' => $object->tipoPessoa] ); // modo 1
TForm::sendData('form_cadastro_pessoas',(object)['tipoPessoa'=>$object->tipoPessoa]); // modo 2
TTransaction::close();
}
catch (exception $e)
{
new TMessage('error', $e->getMessage());
TTransaction::rollback();
}
}