Ir para conteúdo
ukow

Validação de campo Cartão de Crédito

Recommended Posts

Olá!

Estou tentando montar um campo para validação de cartão de crédito e sua bandeira; acabei encontrando o seguinte código: http://jsfiddle.net/q0x3ksv3/

Funciona perfeitamente nessa URL, porém quando tento incluí-lo no meu site, não funciona, tem algo faltando? Segue meu código para entenderem melhor:

<script>
var cartoes = {
    visa: /^4[0-9]{12}(?:[0-9]{3})/,
    mast: /^5[1-5][0-9]{14}/,
    amex: /^3[47][0-9]{13}/,
	invalidos: /^[0126789]|^5[06-9]{1}|^3[1235689]/
};

document.getElementById('num').addEventListener('keyup', testarCC);
var inputs = document.querySelectorAll('.fsResDir input[type="radio"]');

function testarCC(e) {
    var nr = this.value;
    var tipo;
    for (var cartao in cartoes) if (nr.match(cartoes[cartao])) tipo = cartao;
    if (tipo) document.getElementById(tipo).click();
    else for (var i = 0; i < inputs.length; i++) inputs[i].checked = false;
}
</script>
<fieldset class="fsResDir">
    <legend>Dados do Cartão&nbsp;</legend>
    <input type="radio" name="RadBand" id="visa" />
    <label for="visa">
        <img src="visa.png" />
    </label>
    <input type="radio" name="RadBand" id="mast" />
    <label for="mast">
        <img src="master.png" />
    </label>
    <input type="radio" name="RadBand" id="amex" />
    <label for="amex">
        <img src="amex.png" />
    </label>
    <label for="val" class="lab90">Validade:</label>
    <input type="text" class="ent20Form" id="val" name="TxtValMes" />/
    <input type="text" class="ent40Form" name="TxtValAno" />
    <label for="num" class="lab90">Numero:</label>
    <input type=text class="ent120Form" id="num" name="TxtNumero" />
    </div>
</fieldset>

Obrigado!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dá uma olhada nesta biblioteca https://github.com/stripe/jquery.payment 

 

Ela valida e também retorna qual o cartão baseado na numeração informada

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites
4 minutos atrás, Michel Wilhelm disse:

Dá uma olhada nesta biblioteca https://github.com/stripe/jquery.payment 

 

Ela valida e também retorna qual o cartão baseado na numeração informada

 

Ele validou certinho, mas o que preciso é como o exemplo do post, que a bandeira do cartão seja informada automaticamente na tela após o preenchimento, e nessa biblioteca preciso dar uma ação pra isso :/

Compartilhar este post


Link para o post
Compartilhar em outros sites
12 minutos atrás, ukow disse:

 

Ele validou certinho, mas o que preciso é como o exemplo do post, que a bandeira do cartão seja informada automaticamente na tela após o preenchimento, e nessa biblioteca preciso dar uma ação pra isso :/

var cartoes = {
    visa: /^4[0-9]{12}(?:[0-9]{3})/,
    mast: /^5[1-5][0-9]{2}/,
    amex: /^3[47][0-9]{2}/
};




function testarCC(e) {
		var inputs = document.querySelectorAll('.fsResDir input[type="radio"]');
    var nr = this.value;
    var tipo;
    console.log(nr);
    for (var cartao in cartoes) {
    
    	if (nr.match(cartoes[cartao])) {
      	tipo = cartao;
      }
    }
    
    if (tipo) {
	    document.getElementById(tipo).checked=true
    }
    else {
    	for (var i = 0; i < inputs.length; i++) {
      	inputs[i].checked = false;
      }
    };
}

document.getElementById('num').addEventListener('keyup', testarCC);

Veja se é mais ou menos isso. Eu testei digitando "5162" que é o inicio de muitos masterscard, ai selecionou automaticamente o radio

Compartilhar este post


Link para o post
Compartilhar em outros sites
5 minutos atrás, Michel Wilhelm disse:

var cartoes = {
    visa: /^4[0-9]{12}(?:[0-9]{3})/,
    mast: /^5[1-5][0-9]{2}/,
    amex: /^3[47][0-9]{2}/
};




function testarCC(e) {
		var inputs = document.querySelectorAll('.fsResDir input[type="radio"]');
    var nr = this.value;
    var tipo;
    console.log(nr);
    for (var cartao in cartoes) {
    
    	if (nr.match(cartoes[cartao])) {
      	tipo = cartao;
      }
    }
    
    if (tipo) {
	    document.getElementById(tipo).checked=true
    }
    else {
    	for (var i = 0; i < inputs.length; i++) {
      	inputs[i].checked = false;
      }
    };
}

document.getElementById('num').addEventListener('keyup', testarCC);

Veja se é mais ou menos isso. Eu testei digitando "5162" que é o inicio de muitos masterscard, ai selecionou automaticamente o radio

 

 

Estou testando nesse domínio alternativo: http://divinho2.web2420.uni5.net/pag.asp

 

O código da tela ficou esse abaixo, mas continua sem dar retorno algum.

O que é estranho, o código no jsfiddle está funcionando tranquilo, precisa de algum plugin ou algo do tipo?

Obrigado!

<script type="text/javascript">
var cartoes = {
    visa: /^4[0-9]{12}(?:[0-9]{3})/,
    mast: /^5[1-5][0-9]{2}/,
    amex: /^3[47][0-9]{2}/
};




function testarCC(e) {
		var inputs = document.querySelectorAll('.fsResDir input[type="radio"]');
    var nr = this.value;
    var tipo;
    console.log(nr);
    for (var cartao in cartoes) {
    
    	if (nr.match(cartoes[cartao])) {
      	tipo = cartao;
      }
    }
    
    if (tipo) {
	    document.getElementById(tipo).checked=true
    }
    else {
    	for (var i = 0; i < inputs.length; i++) {
      	inputs[i].checked = false;
      }
    };
}

document.getElementById('num').addEventListener('keyup', testarCC);
</script>
<fieldset class="fsResDir">
    <legend>Dados do Cartão&nbsp;</legend>
    <input type="radio" name="RadBand" id="visa" />
    <label for="visa">
        <img src="visa.png" />
    </label>
    <input type="radio" name="RadBand" id="mast" />
    <label for="mast">
        <img src="master.png" />
    </label>
    <input type="radio" name="RadBand" id="amex" />
    <label for="amex">
        <img src="amex.png" />
    </label>
    <label for="val" class="lab90">Validade:</label>
    <input type="text" class="ent20Form" id="val" name="TxtValMes" />/
    <input type="text" class="ent40Form" name="TxtValAno" />
    <label for="num" class="lab90">Numero:</label>
    <input type=text class="ent120Form" id="num" name="TxtNumero" />
    </div>
</fieldset>

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

Joga o script abaixo do HTML. Pode ser bobo, mas abre o console javascript do browser para ver se emite algum erro, mas acredito que já viu isso

  • +1 1

Compartilhar este post


Link para o post
Compartilhar em outros sites

Crie uma conta ou entre para comentar

Você precisar ser um membro para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar Agora


  • Conteúdo Similar

    • Por Michel DS
      Tenho esse código abaixo para inserir no banco de dados access, mas me retorna um erro que nunca vi antes, nunca usei access e estou sendo obrigado a usar =(, 
      se alguém puder me dar uma luz, já perdi várias horas com isso e na internet não encontro solução, o pior é que o select funciona numa boa, agora o insert com o executeUpdate não vai,
      isso me parece erro de permissão de usuário mas já fucei bastante no access, e na internet os tópicos com esse erro não encontro solução =(
      eis o erro: 
      net.ucanaccess.jdbc.UcanaccessSQLException: UCAExc:::4.0.3 user lacks privilege or object not found: USUARIO
      try { ConexaoBD fab = new ConexaoBD(); fab.abrirConexao(); String sql ="insert into acordos(data,cpf,valor,produto,usuario(x),aspect,nome,supervisor,hora)" + " values('"+txtdata.getText().toString()+"','"+txtcpf.getText().toString()+"','"+valor+"','"+cbproduto.getSelectedItem().toString() +"','"+txtusuario.getText().toString()+"','"+lblaspect.getText().toString()+"','"+txtnome.getText().toString()+"','"+hora+"')"; fab.ps = fab.con.prepareStatement(sql); int rows = fab.ps.executeUpdate(); if(rows >= 1){ JOptionPane.showMessageDialog(null, "Acordo registrado com sucesso!","Mensagem do programa",JOptionPane.INFORMATION_MESSAGE); fab.ps.close(); fab.con.close(); fab.st.close(); }else{ JOptionPane.showMessageDialog(null, "ERRO!","Mensagem do programa",JOptionPane.ERROR_MESSAGE); fab.ps.close(); fab.con.close(); fab.st.close(); } } catch (ClassNotFoundException ex) { Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex); } catch (SQLException ex) { Logger.getLogger(Login.class.getName()).log(Level.SEVERE, null, ex); } public Connection con = null ; public PreparedStatement ps = null; public ResultSet rs = null; public Statement st = null; public void abrirConexao() throws ClassNotFoundException{ Class.forName("net.ucanaccess.jdbc.UcanaccessDriver"); String caminho = buscarCaminho(); try{ //Arquivo de caminho do banco String filename = caminho; File arquivo = new File(filename); //verifica se o caminho e arquivo existe. if(!arquivo.exists()){ JOptionPane.showMessageDialog(null, "Caminho do BD não encontrado! \n " + "veirifique se o caminho, nome e extensão estão corretos ou se o arquivo existe!\n Consulte o administrador"); return; }else{ JOptionPane.showMessageDialog(null, "Banco de dados encontrado com sucesso!"); } String database = "jdbc:ucanaccess://" + filename.trim(); //realiza conexao com banco de dados con = DriverManager.getConnection(database,"Administrador","1234"); System.out.println("Conexão obtida com sucesso"); }catch(Exception e) { JOptionPane.showMessageDialog(null,"Erro ao conectar: -> "+ e.getMessage().toString()+""); } classes de conexão e inserção
    • Por TchescoM
      Olá, amigos...
      estou começando agora nesta área e já tenho uma "pequena" dificuldade
      é o seguinte; 
       
      function addImagem(){
          document.getElementById("img'").innerHTML = "<img src='imagem1.jpg' width='100%' height='100%'/>"

      eu tenho um dropdown com vária imagens dentro, e a função acima, adiciona a imagem escolhida dentro da form "img" abaxio
       
      <form id="img">
      </form>
       
      que fica assim: 
       
      <form id="img">
      <img src='imagem1.jpg' width='100%' height='100%'/>
      </form>
       
      Até aí, tudo certo. 
      A partir daí, preciso enviar essa imagem por email mas infelizmente meu conhecimento não me dá a possibilidade no momento
       
      Alguém poderia me ajudar?
       
       
       
       
       
       
    • Por Jesse&Francinete
      Olá pessoal, navego nesse site com a requisição na URL:
       
      https://www.habbo.com.br/api/public/users?name=jessetopzinho
       
      E me retorna os dados:
       
      {"uniqueId":"hhbr-3aadbce5848833d1d4b1504289eefe1c", "name":"jessetopzinho", "figureString":"hd-600-14.ch-630-1408.lg-695-1408.ha-3117-1408.fa-1202-1408", "motto":"- O amor é o vínculo da perfeição.", "memberSince":"2015-04-04T18:13:07.000+0000", "profileVisible":true, "selectedBadges":[ {"badgeIndex":1,"code":"PT356","name":"Brasão Imperial","description":""}, {"badgeIndex":2,"code":"PT268","name":"Liar","description":""}, {"badgeIndex":3,"code":"TR271","name":"Lenda Awk","description":"Uma visita na floresta muitas vezes pode ser uma aula de história ao vivo."}, {"badgeIndex":4,"code":"ES801","name":"Exército Brasileiro","description":""}, {"badgeIndex":5,"code":"CAV24","name":"Emblema Secreto: A Poção do Sono","description":""} ]}  
      Eu quero acessar essa URL numa página PHP e capturar apenas isso: 
       
      O que é o valor de "motto", aguardo respostas.
    • Por Antonio Jorge
      A url é esse exemplo:
      http://www.json-generator.com/api/json/get/cjEWqFyDdu?indent=2
       
      Como eu posso pegar usando curl usando php
       
      Preciso pegar o ID do server
       
      Qualquer ajuda é bem vinda.
    • Por Magskull
      Olá senhoras e senhores, boa tarde e obrigado desde já.

      Tenho uma tabela com 4 colunas no MySQL:
      Cod = Int autoincremento;
      domain = varchar(150);
      dtatualizacao = datetime;
      bvalido = boleano;

      O que eu quero fazer é o seguinte:
      Verificar se um dominio é valido, e atualizar na base de dados com a data e se é valido ou não com uma variavel booleana.
      Porém que eu não estou me saindo bem com meu código, ou eu faço o select ou o update, os 2 não estão acontecendo.
      Como eu devo fazer?

       
      <?php function validadominio($dominio){ if(!checkdnsrr($dominio,'A')){ // $mensagem='Inválido!'; return FALSE; }else{ // $mensagem='Válido!'; return TRUE; } } $servername = "localhost"; $username = "root"; $password = "root"; $dbname = "verificar_dominios"; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "SELECT cod, domain FROM dominios where dtatualizacao='0000-00-00 00:00:00' limit 1"; $result = $conn->query($sql); if ($result->num_rows > 0) { while($row = $result->fetch_assoc()) { $valido= validadominio($row['domain']); $codigo = $row['codigo']; $sqlupdate="update dominios set dtatualizacao=NOW(), bvalido='$valido' where cod='$codigo'"; echo "Dominio: " . $row['domain']." - Verif.: ".$valido."<br>"; $mysqlcli->query($sqlupdate, $conn); } } else { echo "0 results"; } $conn->close(); ?>
×

Informação importante

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

Este projeto é mantido e patrocinado pelas empresas:
Hospedado por: