Ir para conteúdo

danielpinho

Members
  • Total de itens

    1
  • Registro em

  • Última visita

Tudo que danielpinho postou

  1. danielpinho

    Executar função apenas uma vez no "onkeyup"

    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>
×

Informação importante

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