Ir para conteúdo

POWERED BY:

Arquivado

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

Marina Mattos

[Resolvido] eventos do javascript

Recommended Posts

Bom dia, pessoal podem me ajudar: é o seguinte o script abaixo esta funcionando corretamente: a unica coisa que eu preciso e não consegui fazer,é que o resultado só é mostrado no campo readonly quando o usuário clicar no campo isto por estou usando o onclick, e quero que ao perder o foco do campo de cima ja mostre o resultado no campo de baixo que é o campo readonly, ja usei outro evento no lugar do onclick, mas não funciona.

obrigada o script é este ai;

 

 

base=0;

ct=0;

 

document.getElementById("somaBase").onclick = function somabase(){

var potassio = document.getElementById("potassio").value;

var calcio = document.getElementById("calcio").value;

var sodio = document.getElementById("sodio").value;

var magnesio = document.getElementById("magnesio").value;

base=eval(potassio) + eval(calcio) + eval(sodio) + eval(magnesio);

document.getElementById("somaBase").value = base;

 

 

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

quero que ao perder o foco do campo de cima ja mostre o resultado no campo de baixo que é o campo readonly

 

chame a mesma função no evento onblur do campo de cima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Boa tarde willian

 

então eu ja coloquei onblur, onfous e varios eventos e nenhum funciona e também coloquei onblur no input chamando a função e nada

 

veja o exemplo abaixo:

 

base=0;

ct=0;

 

document.getElementById("somaBase").onBlur = function somabase(){

var potassio = document.getElementById("potassio").value;

var calcio = document.getElementById("calcio").value;

var sodio = document.getElementById("sodio").value;

var magnesio = document.getElementById("magnesio").value;

base=eval(potassio) + eval(calcio) + eval(sodio) + eval(magnesio);

document.getElementById("somaBase").value = base;

 

 

AGORA VEJA COMO FICA O INPUT:

<input class="focoverde" type=text name=SODIO id="sodio" onBlur =" somabase()"

 

Este campo sodio é o penultimo hora que perder o foco ja é pra aparecer o resultado no campo readonly sem eu precisar clicar dentro dele entende?

abraço

 

 

 

quero que ao perder o foco do campo de cima ja mostre o resultado no campo de baixo que é o campo readonly

 

chame a mesma função no evento onblur do campo de cima.

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

você fez errado.

 

se vai chamar como função anônima, não deve colocar nada no meio do HTML.

 

deixe o input, assim:

<input class="focoverde" type="text" name="SODIO" id="sodio"  />
e a função já parece que está certa.. você está colocando tudo isso dentro de um window.onload ?

 

 

posta o HTML e o código js completo se ainda tiver com dúvidas

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi, willian, a pagina toda é grande, mas estou passando o js e ja esta dentro do window onload onde esta onclick quero tirar e quero que funcione sem o usuario precisar clicar dentro do input Readonly, quando ele digitar o campo de cima ja vai mostrando automaticamente o resulstado nos campos readonly do jeito que meu codigo esta, ele mostra o resultado da conta somente se eu clicar dentro do campo readonly

    
 <!-- SOMA DE BASES: CAMPOS: POTASSIO + CALCIO + MAGNESIO + SODIO -->
                   <!-- o resultado desta conta  esta na pagina mostra analise de solo no campo SB -->
                    window.onload = function() {
               
                base=0;
                ct=0;
               
        document.getElementById("somaBase").onclick = function somabase(){
            var potassio = document.getElementById("potassio").value;
            var calcio = document.getElementById("calcio").value;
            var sodio = document.getElementById("sodio").value;
            var magnesio = document.getElementById("magnesio").value;
            base=eval(potassio) + eval(calcio) + eval(sodio) + eval(magnesio); 
           document.getElementById("somaBase").value = base;
          
         
        }
          
           <!-- SOMA CTC CAMPOS: POTASSIO + CALCIO + MAGNESIO + HAL+ SODIO -->
           
         document.getElementById("ctc").onclick= function somactc(){  
              var hal = document.getElementById("hal").value;
              var sodio = document.getElementById("sodio").value; 
              ct = base + eval(hal) + eval(sodio); 
             document.getElementById("ctc").value = ct;     
     
    }
    
    
           <!-- DIVIDIR CAMPO DE SOMA BASE PELO CAMPO CTC * 100 -->
          <!-- o resultado desta conta esta na pagina mostra analise de solo campo V% -->
          
             document.getElementById("saturacaoBase").onclick= function divideSatruacao(){        
              document.getElementById("saturacaoBase").value = (base / ct) * 100;  
              
          } 
             
              document.getElementById("saturacaoAluminio").onclick= function divideAluminio(){  
              var aluminio = document.getElementById("aluminio").value; 
              document.getElementById("saturacaoAluminio").value = (aluminio*100) /  (eval(base) + eval(aluminio)) ;
            }                
              }
    </script>

Compartilhar este post


Link para o post
Compartilhar em outros sites

vixi cara.. e esses comentários ai ??

 

não pode.. você tá usando sintaxe de comentários HTML, dentro do <script>.. comentários js, tem a sintaxe:

/* para varias linhas */

e

// para apenas uma linha

 

oq você tinha que fazer, era:

document.getElementById('sodio').onblur = function somabase(){

Compartilhar este post


Link para o post
Compartilhar em outros sites

oi, willian td bem?

isto para a função soma base, mas eu tenho 4 funções diferentes dentro do mesmo onload do jeito que você colocou no input funciona só para um eu ja fiz assim. o que quero e que todas as 4 funções dentro do mesmo onload, ja criei um onload para cada funçao e tb não funcionou, portanto ainda estou na mesma

Compartilhar este post


Link para o post
Compartilhar em outros sites

faça a mesma coisa com os outros..

 

não faz sentido ter vários window.onload mesmo.. faça tudo num unico.

Compartilhar este post


Link para o post
Compartilhar em outros sites

oi, willian obrigada pelas dicas e ajuda, mas fiz dos dois jeitos e não funcionou, por isso que postei aqui no forum

 

se você puder testa ai pra mim com meu código completo e verá que não funciona

 

obrigada,

marina

Compartilhar este post


Link para o post
Compartilhar em outros sites

hum... dá uma olhada:

 

<html>
<head>
<script type='text/javascript'>
window.onload = function(){
	/* aplicando funções no click do campo */
	id('somaBase').onclick = function(){
		somabase();
	}
	id('ctc').onclick= function(){  
		somactc();
	}
	
	/* aplicando funções ao sair do campo */
	id('magnesio').onblur = function(){
		somabase();
	}
	id('hal').onblur= function(){  
		somactc();
	}
}
function id( el ){
	return document.getElementById( el );
}
function somabase(){
	var potassio = id('potassio').value;
	var calcio = id('calcio').value;
	var sodio = id('sodio').value;
	var magnesio = id('magnesio').value;
	id('somaBase').value = eval(potassio) + eval(calcio) + eval(sodio) + eval(magnesio);
}
function somactc(){  
	var hal = id('hal').value;
	var sodio = id('sodio').value; 
	id('ctc').value = parseFloat( id('somaBase').value ) + eval(hal) + eval(sodio);
}
</script>
</head>
<body>
	<label>Potássio: <input type="text" name="potassio" id="potassio" /></label>
	<label>Cálcio: <input type="text" name="calcio" id="calcio" /></label>
	<label>Sódio: <input type="text" name="sodio" id="sodio" /></label>
	<label>Magnésio: <input type="text" name="magnesio" id="magnesio" /></label>
	<label>Hal: <input type="text" name="hal" id="hal" /></label>
	<br />
	
	<label>Soma Base :<input type="text" name="somaBase" id="somaBase" readonly="readonly" /></label>
	
	<label>CTC :<input type="text" name="ctc" id="ctc" readonly="readonly" /></label>

</body>
</html>
ao sair dos campos:

#magnesio, e #hal o cálculo será feito. E ao clicar nos campos readonly, ele também será.

veja que eu reaproveitei as funções, simplifiquei o teu script, e organizei ele melhor.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Oi, Willian , nossa seu codigo ficou mil vezes melhor que o meu, coloquei na minha pagina e agora sim esta fazendo do jeito que eu queria, vou fazer pra todos os campos, assim o usuario vai digitando e ja vai mostrando o resultado nos campos readonly, ah o seu código esta fazendo isso só no CTC nos de soma de base qdo clico no magnesio que ta o onblur pra perder o foco e mostra ele mostra NAN no readonly. mas pode deixar que eu mesmo arrumo. e muitissimo obrigadaaaaaaaa pela sua paciencia e ajuda

 

Abraço

 

Oi, willian, ficou assim o códgio: eu coloquei onkeup para todos para quando o usuario ir digitando ja ir mostrando o resultado

    window.onload = function(){
       
        /* aplicando funções no click do campo */
      
        id('somaBase').onclick = function(){
                somabase();
        }
        id('ctc').onclick= function(){  
                somactc();
        }
        
      
        /* aplicando funções ao sair do campo */
       
        id('potassio').onkeyup= function(){  
                somabase();
        }
       
        id('calcio').onkeyup= function(){  
                somabase();
         }     
          
                       
        id('magnesio').onkeyup= function(){  
                somabase();
         }          
                    
       
       id('sodio').onkeyup= function(){  
                somabase();
         }          
       
       
        id('hal').onblur= function(){  
                somactc();
        }
}
function id( el ){
        return document.getElementById( el );
}
function somabase(){
        
     var potassio = id('potassio').value;
     var calcio = id('calcio').value;
     var magnesio = id('magnesio').value;
     var  sodio = id('sodio').value;
    id('somaBase').value = eval(potassio) + eval(calcio) + eval(magnesio) + eval(sodio);
}
function somactc(){  
        var hal = id('hal').value;
        var sodio = id('sodio').value; 
        id('ctc').value = parseFloat( id('somaBase').value ) + eval(hal);
}

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.