Jump to content
quimera

onkeypress na execução de funções

Recommended Posts

Pessoal estou com um pequeno problema e sobrecarga.

Criei uma extensão para ajudar na minha digitação no serviço (o "programa" roda a partir do navegador opera/chrome)  só que o mesmo muda tudo toda vez que se insere um dado

então tive que me forçar a executar as funções toda vez que uma tecla é pressionada, só que esse bendito programa não dá refresh na página, é todo em ajax então quando a função

se executa mais de 1200 vezes começa a pesar no navegador, aí sou obrigado a salvar tudo e atualizar a página (parar perde tempo demais).

document.body.onkeyup = function (e) {
  funcao_verificadora();
}

Minha dúvida é: Tem condição melhorar isso, tipo limpar cache em tempo de execução?

Tipo executar a função e já ir limpando.

Share this post


Link to post
Share on other sites

Você pretende atualizar à cada tecla pressionada? Se sim, utilize:

 

document.body.onkeyup = function (e) {
  funcao_verificadora();
  location.reload();
}

Pesquisando, obtive o resultado:

 

 

CACHE-CONTROL: Essa tag é utilizada no com o tipo “http-equiv” e é reconhecida apenas pelo http 1.1, e no seu atributo “content” (onde fica o conteúdo da tag) é permitido os seguintes valores:

  • Public: Os dados da página podem ser armazenados de forma compartilhada, isto é, será utilizado por diferentes usuários de um mesmo browser.
  • Private: É o contrário de public, o cache é armazenado para um específico usuário.
  • No-Cache: A página não é armazenada em Cache.
  • No-Store: É feito um cache temporário, a página não é arquivada.

 

Como a tag cache-control é reconhecida apenas pelo HTTP 1.1, o uso do pragma:no-cache é importante caso pretenda-se usar o cache-control:no-cache, isso porque ambos tem o mesmo efeito mas não se sabe se o servidor é ou não compatível com o HTTP 1.1, por isso o uso de ambos é importante.

 

<meta http-equiv="cache-control"   content="no-cache" />

 

Espero ter te ajudado em algo.

Share this post


Link to post
Share on other sites
30 minutos atrás, Jesse&Francinete disse:

Você pretende atualizar à cada tecla pressionada? Se sim, utilize:

 


document.body.onkeyup = function (e) {
  funcao_verificadora();
  location.reload();
}

Pesquisando, obtive o resultado:

 

 

CACHE-CONTROL: Essa tag é utilizada no com o tipo “http-equiv” e é reconhecida apenas pelo http 1.1, e no seu atributo “content” (onde fica o conteúdo da tag) é permitido os seguintes valores:

  • Public: Os dados da página podem ser armazenados de forma compartilhada, isto é, será utilizado por diferentes usuários de um mesmo browser.
  • Private: É o contrário de public, o cache é armazenado para um específico usuário.
  • No-Cache: A página não é armazenada em Cache.
  • No-Store: É feito um cache temporário, a página não é arquivada.

 

Como a tag cache-control é reconhecida apenas pelo HTTP 1.1, o uso do pragma:no-cache é importante caso pretenda-se usar o cache-control:no-cache, isso porque ambos tem o mesmo efeito mas não se sabe se o servidor é ou não compatível com o HTTP 1.1, por isso o uso de ambos é importante.

 


<meta http-equiv="cache-control"   content="no-cache" />

 

Espero ter te ajudado em algo.

 

Vlw por tentar ajudar, mas, não pode dar refresh na página, pois o bendito "programa" usa o browser como tela, e tudo é em ajax, ou seja, também não atualiza a página atual. Pra atualizar, preciso salvar os registros e recomeçar.

 

 

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

  • Similar Content

    • By danielpinho
      Boa tarde pessoal,
       
      Estou desenvolvendo um sistema de pagamento via cartão de crédito que requer a execução de um ajax (request https) quando o usuário digita o número do cartão, a fim de capturar a bandeira do mesmo. O javascript deve enviar via ajax somente os 6 primeiros dígitos do cartão.
       
      A função já está funcionando parcialmente, da seguinte forma: quando o usuário digita o sexto dígito, o ajax faz a requisição e retorna o resultado.
       
      O problema é que quando o usuário continua digitando o restante do número do cartão, o ajax continua fazendo uma requisição a cada tecla pressionada, o que vai acabar sobrecarregando desnecessariamente o meu servidor.
       
      Eu sei que o ideal seria acionar a função somente quando a minha keyword tivesse lenght=6 (assim, ao continuar digitando a função não seria acionada), porém tem pessoas que copiam e colam o número do cartão de uma vez, e isso geraria um bypass na função...
       
      Além disso, o sistema deve ser capaz de reconhecer que houve uma eventual mudança nos 6 números digitados inicialmente, para fazer uma nova requisição ajax com esses números novos.
       
      A solução que pensei, em síntese, foi criar uma variável chamada "lastquery", inicialmente com o valor "000000". Digamos que os 6 dígitos pesquisados estivessem na variável "sixdigits". 
       
      Quando a requisição ajax fosse feita, a variável "lastquery" teria valor alterado para o mesmo valor de "sixdigits".
       
      E a requisição ajax ficaria condicionada da seguinte forma:   if (lasquery !== sixdigits) { executa ajax }.
       
      O problema é que não está dando certo. Ele continua executando normalmente, mesmo quando o valor de lastquery é o mesmo valor de sixdigits.
       
      Alguém mais inteligente do que eu consegue me ajudar? 
       
      Segue o código que não está funcionando perfeitamente. Reparem que fiz um alert para verificar o que estava dando errado, mas a mensagem que recebo no alert é sempre algo do tipo: "10100 is not equal to 10100". Não consigo entender porque isso acontece, já que lá em cima coloquei a condicionante !==.
       
      Obrigado!
       
      <form method="post"> <input type="text" name="ccnumber" id="ccnumber" value="" onkeyup="getcardbin()"> </form> <script> var lastquery = "000000"; function getcardbin() { var min_length = 6; var keyword = $('#ccnumber').val(); if (keyword.length >= min_length) { var justsix = keyword.substring(0, 6); if (justsix !== lastquery) { $.ajax({ url: '/getcardbin.cgi', type: 'POST', data: { 'tkn': 'token_interno', 'tid': 'token_interno', 'bin': justsix }, success:function(data){ $('#returnmsg').prepend(data); alert(justsix + ' is not equal to ' + lastquery); var lastquery = justsix; } }); } } } </script>  
    • By quimera
      foi ser direto
      não estou conseguindo pegar um parâmetro em funções predefinidas do chrome.
       
      //toda vez que uma tecla for pressionada document.body.onkeypress = function (e) { stg({sim: true}, function(i){ if(i.sim){ console.log(e.keyCode);//undefined //como pegar a tecla que foi pressionada? //Não há parâmetro e não aceita globais } }); } //pegar parâmetros no storage function stg(param, call) {     chrome.storage.sync.get(param, function (param)     {         call(param);     }); }  
    • By vpontessilva
      Fala galera, de buenas? Estou tendo o problema esse simples código meu: 
      Quero que ele retorne o valor da soma depois de inserir a quantidade no campo valor1 e selecionar o combustivel no campo select
      sem ter que clicar em calcular ou algo do tipo: Segue script que eu fiz
       

       
      <!DOCTYPE html> <html> <body> <input type="text" id="valor1" onkeyup="myFunction()"> <select id="valor2" onkeyup="myFunction()">     <option value="eletricidade">Eletricidade</option>     <option value="gasolina">Gasolina</option>     <option value="oleo">Oleo</option> </select> <p>O resultado é: <span id="resultado"></span></p> <script> function myFunction() {     var x = document.getElementById("valor1").value;     var y = document.getElementById("valor2").value;               if(y == Eletricidade) {         res = parseInt(x) * 2;         }         else if (y == Gasolina) {         res = parseInt(x) * 3;         }         else {         res = parseInt(x) * 4;         };              document.getElementById("resultado").innerHTML = res; } </script> </body> </html> Onde estou garoteando? Ele não exibe o resultado da multiplicação
    • By kernmatheus
      Srs,
       
      Tenho um campo A readonly, que recebe a soma dos campos B e C por um script.
      Quando o valor de B ou C é alterado, executa um script que atualiza o valor de A, eu preciso que no momento que o valor de A for atualizado execute outra soma. Como posso identificar essa alteração para executar outra função?
       
      *Já tentei com onchange, onvalue, oninput...., direto no HTML, tentei também com onkeyup no jquery, mas nenhum funcionou.
       
      Lembrando que o campo é readonly.
    • By josenilson
      Olá galera, tudo blz,  por  favor,  como posso resolver esse problema.
       
      Tenho um select option onde eu seleciono o banco exemplo (BRADESCO, BRASIL, ITAU  ) e um input que seria a agencia do banco escolhido.
       
      apos eu selecionar o banco desejado preciso que o input fique com a mascara de acordo com o banco escolhido,  eu tentei   com uma tomada de decisão   e dentro desta decisão uma chamada de função mas não sei se seria isso o certo, pois não acertei colocar o onkeypress na função.  abaixo esta o código.  desde já agradeço a todos. 
       
      Função vazia onde deveria estar o onkeypress com a mascara. 
      <?php function brasil(){ } ?> Aqui esta o select junto com o input. 
       
      <select style="width:200px;font-size: 13px" name="banco" required class="form-control"> <option value="">BANCO</option> <option value="BRASIL">BRASIL</option> <option value="BRADESCO">BRADESCO</option> <option value="CAIXA_ECONOMICA">CAIXA ECONOMICA</option> <option value="SANTANDER">SANTANDER</option> <option value="ITAU">ITAU</option> </select> <input style="width:167px;font-size:13px; "type="text" name="agencia" class="form-control" placeholder="AGENCIA" > <?php if (!empty($_POST['banco'])){ $BANCO = $_POST["banco"]; $BRASIL = "BRASIL"; $BRADESCO = "BRADESCO"; if ($BANCO == $BRASIL){ brasil(); }ELSE{ echo "ESCOLHA UM BANCO"; } } ?>  
       
×

Important Information

Ao usar o fórum, você concorda com nossos Terms of Use.