Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

DionDu

Adicionar um nova função a um evento (onclick, onkeypress, etc)

Recommended Posts

Olá

 

Tenho no meu HTML o seguinte código:

 

<input type="text" onkeypress="aplicaMascara();" tipo="CNPJ">

 

Tenho um código JavaScript que insere algumas funções em alguns eventos automaticamente de acordo com o "tipo" do campo no momento que a página é carregada.

 

O código funciona legal. O problema é quando já existe uma função aplicada a este evento o JavaScript sobreescreve a nova função sobre a função que existia antes.

 

Como posso fazer para através do javascript "adicionar" uma nova função ao evento "onkeypress" do código acima sem apagar a função que existia anteriormente?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tenho um código JavaScript que insere algumas funções em alguns eventos automaticamente de acordo com o "tipo" do campo no momento que a página é carregada.

Como é este código ?

 

então aplique as duas funçoes ou mais que precisar com ele.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não é tão simple assim Shwa, como eu disse o processo precisa ser automático, sem que eu modifique o HTML manualmente.

 

Por exemplo: Tenho muitas páginas que possuem campos cujo atributo "tipo" (atributo que inventei) é igual a "CNPJ". Em todas estas páginas no "onload" é carregada a função function procuraCampos('input') (abaixo).

 

Como todas as páginas já carregam esta função o que preciso fazer é que o esta função adicione algumas funções ao evento "onblur" destes campos.

 

Usando o código abaixo até que funciona. O problema é que se já existir alguma outra função no evento "onblur" do campo no HTML o Javascript apaga essa função e insere uma nova função. Entende?

 

function procuraCampos(tag){
	var objs = document.getElementsByTagName(tag);
	for(i=0;i<objs.length;i++){
		if(objs[i].type = 'text' || objs[i].obrigatorio='true'){ //atribui a funcao valida para todos os elementos tag exceto type = button

			//Aqui é atribuido a função estilizaErros_onblur(this) a todo input text que tenha preenchimento obrigatório
			//Esta função na verdade modifica algumas informações dentro da página, muda as bordas do campo txt, etc...
			// ESTA FUNÇÃO É ADICIONADATA PARA QUASE TODOS OS CAMPOS TXT
			objs[i].onblur = function() { estilizaErros_onblur(this); };
			
			//Aqui é atribuído ao campo cujo tipo seja CNPJ a função validaCNPJ() no evento onblur
			// ESTA FUNÇÃO É ADICIONADATA PARA TODOS OS CAMPOS CNPJ
			if(objs[i].tipo=='CNPJ'){
					objs[i].onblur = function() { validaCNPJ(this.value);};
			}
		}
	}
}

A dúvida é a seguinte: Como ADICIONAR (através do Javascript - precisa ser através dele) novas funções a um evento que no HTML já possua alguma função associada a ele?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sugestão 1:

if(objs[i].tipo=='CNPJ'){
                                        objs[i].onblur = function() { validaCNPJ(this.value); outraFuncao(); };
                        }

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sugestão 1:

if(objs[i].tipo=='CNPJ'){
                                        objs[i].onblur = function() { validaCNPJ(this.value); outraFuncao(); };
                        }

O problema disso William é que se no HTML já houver alguma função no evento "onblur" ela será apagada e substituída por estas 2, entende? Este é meu problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Cara, a minha sugestão, é parar de colocar funções no HTML!

 

Separar camadas é uma evolução.

 

<html>
<head>
<style type="text/css">

</style>
<script>
window.onload = function(){
        var inputs = document.getElementsByTagName('input');
        for( var i=0; i<inputs.length;i++ ){
                addClickEvent( inputs[i], outra, false );
        }
}
function outra(){
        alert( 'coloquei depois' );
}
function addClickEvent( element, funct, boll ){
        if ( document.attachEvent || !document.addEventListener )
                element.attachEvent( 'onclick', funct );
        else
                element.addEventListener( 'click', funct, boll );
}
</script>
</head>
<body>

        <input type="text" name="tal" onclick="alert( 'já existia' )" />
        <input type="text" name="tal" onclick="alert( 'aqui também já tinha um' )" />
        <input type="text" name="tal" />

</body>
</html>

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aew rapaz pq você não faz uma função nova que seleciona as funções ? pelo que você disse a parit de um tipo ele gera a função correto ? Cria uma função de SELECT e gera um arquivo biblioteca de funções.

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.