Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
ola pessoa
estou tendo o seguinte problema
tenho o codigo abaixo
/**
* @author Eduardo
* @version 1.00
*/
function PessoaFlyweight(){
this.nomeFieldName = "";
this.nomeFieldLabel = "";
this.documentoFieldName = "";
this.documentoFieldLabel = "";
this.documentoDescricaoFieldName = "";
var validate = new Validate();
this.trigger = function(){
getID(this.documentoFieldName).onblur = function(){this.displayDocumentoLabel();}
}
this.isValid = function(){
if( validate.isJustLettersInteger(this.nomeFieldName,this.nomeFieldLabel,5,50)==false ||
validate.isCPFouCNPJ(this.documentoFieldName,this.documentoFieldLabel)==false){
return false;
}else{
return true;
}
}
this.displayDocumentoLabel = function(){
getID(this.documentoDescricaoFieldName).innerHTML = '';
setIDClass(this.documentoFieldName,'FormCampo');
//verifico se é um tipo de pessoa valida
if(validate.isCPFouCNPJ(this.documentoFieldName,this.documentoFieldLabel)==true){
//se for uma pessoa juridica
if(validate.isCNPJ(this.documentoFieldName,'')==true){
//aviso que é uma pessoa juridica
getID(this.documentoDescricaoFieldName).innerHTML = 'Jurídica';
}
if(validate.isCPF(this.documentoFieldName,'')==true){
//aviso que é uma pessoa fisica
getID(this.documentoDescricaoFieldName).innerHTML = 'Física';
}
}else{
getID(this.documentoDescricaoFieldName).innerHTML = 'Inválido';
setIDClass(this.documentoFieldName,'FormCampoErr');
//setIDDisplay('pessoaTipoFisica','none');
}
}
}
meu principal problema é nesta linha
getID(this.documentoFieldName).onblur = function(){this.displayDocumentoLabel();}
seguinte, ele nao reconhece o "this.displayDocumentoLabel()", pra ele é como se nao existi-se, porem, se eu colocar antes do "function()", ele reconhece.
pelo que entendi, ele nao consegue ler o escopo por causa do funcion.
alguem podem me ajudar com isso?
em como acessar esse metodo!?
abs
T+
beleza Otata
pensei nisso mas nao vai funcionar
essa parte do cogigo
this.nomeFieldName = "";
this.nomeFieldLabel = "";
this.documentoFieldName = "";
this.documentoFieldLabel = "";
this.documentoDescricaoFieldName = "";
informa o nome dos campos para eu nao ter que usar HardCode.
Problema em eu usar HardCode, reusabilidade, eu tenho duplicacao de alguns FORMS(por exemplo telefone e Logradouro), e com isso teria que Copiar Colar o codigo.
Desta forma que fiz, eu so passa o nome do campos, e com isso, nao tenho duplicidade, apelas crio o objeto e informo os campos e Label.
Obrigado pela ajuda
T+
falow
Eu faria assim
getID(this.documentoFieldName).onblur = this.nomedafuncao;
this.nomedafuncao = function(e){
var obj = new PessoaFlyweight();
obj.displayDocumentoLabel();
}
senão tenta passar só o evento pra dentro da funcao
getID(this.documentoFieldName).onblur = function(e){
deste modo o this seria o elemeto retornado pelo função getID..
o que você pode fazer é instanciar a classe dentro dela mesmo..
é uma solução...t+