Inscrições abertas para nosso Webinar anual Adianti Framework 2024!
Clique aqui para saber mais
Alterar Atributo de campo em tempo de execução Olá Pessoal! Através do método setChangeAction de um combo é possível alterar o valor de outro campo em tempo de execução, pois bem, tentei utilizar o mesmo princípio para alterar um atributo de um campo, ou seja, o campo estava setado com o readonly = true depois de selecionar na combo o valor "Sim" o método de outro campo deveria mudar para readonly = ...
ES
Alterar Atributo de campo em tempo de execução  
Fechado
Olá Pessoal!
Através do método setChangeAction de um combo é possível alterar o valor de outro campo em tempo de execução, pois bem, tentei utilizar o mesmo princípio para alterar um atributo de um campo, ou seja, o campo estava setado com o readonly = true depois de selecionar na combo o valor "Sim" o método de outro campo deveria mudar para readonly = false.

Infelizmente não deu certo, então usei um artifício nesse momento que ficou assim:
  1. <?php $obj = new StdClass;
  2.         if ($param['is_link']=='N') {
  3.             $obj->pai 'Y';
  4.             echo ('$('."'#classe'".').attr("readonly", true);
  5.                    $('."'#classe'".').attr("class", "tfield_disabled");
  6.         } ?>


Com esse artifício o resultado foi positivo, mas pergunto se existe uma forma de executar tal procedimento sem precisar recorrer ao echo?

att.
Eliezer

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


GF

Eliezer, tudo bem?
Vou te dar uma sugestão, não faz isso... crie códigos javascript para alterar o DOM em tempo de execução, afinal é para isso que servem. Segue um exemplo de como você poderia desenvolver o que você precisa, sem gambis, pogs, usando os recursos disponíveis do framework.

Exemplo:

$script = new TElement('script'); $script->type = 'text/javascript'; $javascript = " // personaliza os campos de acordo com o tipo de pessoa $('select[name=\"tipopessoa_id\"]').change(function(event){ var tipoPessoa $('select[name=\"tipopessoa_id\"] > option:selected').each(function(){ tipoPessoa = $(this).text(); }); if(tipoPessoa.toLowerCase() == 'física') { $('label:contains(CNPJ:)').parent().css('left',82); $('label:contains(CNPJ:)').text('CPF:'); $('input[name=\"cpf_cnpj\"]').val(''); $('input[name=\"cpf_cnpj\"]').attr({onkeypress:'return entryMask(this,event,\"999.999.999-99\")'}); $('input[name=\"insc_estadual\"]').attr({class:'tfield_disabled',readonly:'1',value:''}); $('label:contains(Fantasia:)').parent().css('left',65); $('label:contains(Fantasia:)').text('Apelido:'); } if(tipoPessoa.toLowerCase() == 'jurídica') { $('label:contains(CPF:)').parent().css('left',75); $('label:contains(CPF:)').text('CNPJ:'); $('input[name=\"cpf_cnpj\"]').val(''); $('input[name=\"cpf_cnpj\"]').attr({onkeypress:'return entryMask(this,event,\"99.999.999/9999-99\")'}); $('input[name=\"insc_estadual\"]').attr({class:'tfield',readonly:false,value:''}); $('label:contains(Apelido:)').parent().css('left',58); $('label:contains(Apelido:)').text('Fantasia:'); } }); "; $script->add($javascript); parent::add($script);


Como podes ver é um exemplo bem simples. Nele estou alterando labels e inputs através de um TCombo. Espero que tenha ajudado. Abraço!
PD

É isso aí mesmo Guilherme, eu mesmo ia sugerir usar a TElement :-)

abs,
Pablo
ES

Valeu pessoal! Resolvi com TElement mesmo. Obrigado!