-
Conteúdo Similar
-
Por 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>
-
Por 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); }); }
-
Por 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
-
Por 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.
-
Por 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"; } } ?>
-