Ir para conteúdo
    • João Batista Neto

      iMasters InterCon 2017   10-10-2017

      Ainda dá tempo de se inscrever no iMasters InterCon 2017, o maior evento dev do Brasil!  
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


  • Próximos Eventos

  • Conteúdo Similar

    • Por willwalker
      Estou desenvolvendo uma aplicação com Angular Cli, estou acompanhado um curso onde ele cria os arrays e cadastra no localStorage do naveador.
       
      Mas eu queria fazer diferente, quero chamar uma api, ler esse json e alimentar meu HTML.
       
      No app.module.ts importei o HttpClientModule e no meu component.ts coloquei o seguinte:
      import { Component, OnInit } from '@angular/core'; import { HttpClient } from '@angular/common/http'; @Component({ selector: 'app-listar', templateUrl: './listar.component.html', styleUrls: ['./listar.component.css'] }) export class ListarComponent implements OnInit { itensJson: string[]; constructor(private http: HttpClient) { } ngOnInit() { const Key = "2hKjRWO84XXPqnffl8lPZW1WCXbSyQj8q5VDpECf"; this.http.get('https://api.com?api_key='+Key).subscribe(data => { this.itensJson = data['itensJson']; }); } } Só que agora eu não sei como manipular isso. No HTML no tr eu coloquei assim:
      <tr *ngFor="let itensJson of itens"> <td>{{ itens.nome }}</td> </tr> Mas não exibe nada e eu não sei como eu poderia debugar o retorno do Json, estou estudando as sintaxe do Angular, mas não tenho dificuldades em Javascript. Só quero aprender de forma correta a usar o Angular.
       
      Abraços e obrigado!
    • Por marcelobbt
      Estou montando um form que acrescenta alguns campos mais esses campos que são acrescentados não consigo fazer funcionar a validação.
       
      Obs: Se eu colocar o campo no html as regras de validação funcionam, mas se eu acrescento via botão ele não funciona.
       
      html:
      <div class="row" ng-app="acidente"> <div class="col-sm-12"> <h2>Cadastrar Acidente</h2> <p>Empresa: <?php echo '<strong>'.$mensal->__get('empresa').'</strong>&nbsp;&nbsp;-&nbsp;&nbsp;Período:'.$mensal->__get('mes').'/'.$mensal->__get('ano'); ?></p> <form class="form-horizontal" name="acidenteForm" novalidate action="http://www.google.com"> <div class="form-group"> <label class="col-sm-2 control-label">Dia do Acidente<span class="vermelho">*</span>:</label> <div class="col-sm-10"> <input type="number" name="diaform" class="form-control" ng-model="diaform" required dia-Acidente> &nbsp;&nbsp;<span class="vermelho" ng-show="acidenteForm.diaform.$invalid && acidenteForm.diaform.$dirty">O dia do acidente deve ser um número válido.</span> </div> </div> <div class="form-group"> <label class="col-sm-2 control-label">Descrição do Acidente<span class="vermelho">*</span>:</label> <div class="col-sm-10"> <textarea name="descricaoform" class="form-control" required ng-model="descricaoform" rows="5"></textarea> <p class="vermelho" ng-show="acidenteForm.descricaoform.$invalid && acidenteForm.descricaoform.$dirty">Favor preencher a descrição do acidente.</p> </div> </div> <div class="form-group"> <label class="col-sm-2 control-label">Recomendações do Acidente:</label> <div class="col-sm-10"> <textarea name="recomendacaoform" class="form-control" rows="5"></textarea> </div> </div> <span ng-controller="AdicionarController"> <div class="form-group"> <label class="col-sm-2 control-label">Adicionar acidentado:</label> <div class="col-sm-10"> <input type="button" class="btn btn-success" ng-click="AdicionarCampos()" name="adicionarAcidentado" value="+"> </div> </div> <div id="maisCampos"> </div> </span> <p><span class="vermelho">*</span> campos de preenchimento obrigatório</p> <div class="form-group"> <label class="col-sm-2 control-label">&nbsp;</label> <div class="col-sm-10"> <input type="submit" class="btn btn-success" name="cadastrar" ng-disabled="acidenteForm.$invalid" value="Enviar"> </div> </div> </form> </div> <script src="<?php echo base_url(); ?>js/angular.min.js"></script> <script src="<?php echo base_url(); ?>js/acidente.js"></script> </div>  
      acidente.js
      var app = angular.module('acidente', []); app.directive('diaAcidente', function() { return { require: 'ngModel', link: function(scope, element, attr, mCtrl) { function myValidation(value) { if (value > 0 && value < 32) { mCtrl.$setValidity('charE', true); } else { mCtrl.$setValidity('charE', false); } return value; } mCtrl.$parsers.push(myValidation); } }; }); var adicionar = []; var i = 0; app.controller('AdicionarController', function($scope) { $scope.AdicionarCampos = function () { ordinal = i+1; adicionar.push('<p><strong>'+ordinal+'º acidentado</strong></p>'); adicionar.push('<div class="form-group"><label class="col-sm-2 control-label">Matrícula:</label><div class="col-sm-10"><input type="number" name="matriculaform'+i+'" class="form-control"></div></div>'); adicionar.push('<div class="form-group"><label class="col-sm-2 control-label">Previsão de Alta<span class="vermelho">*</span>:</label><div class="col-sm-10"><input type="date" name="previsaoform'+i+'" id="previsaoform'+i+'" class="form-control" required ng-model="previsaoform'+i+'">&nbsp;&nbsp;<span class="vermelho" ng-show="acidenteForm.previsaoform'+i+'.$invalid && acidenteForm.previsaoform'+i+'.$dirty">Favor informar a previsao da alta.</span></div></div>'); document.getElementById("maisCampos").innerHTML = adicionar; i = i + 1; }; });  
       
    • Por editorpa
      Bom dia!
      Sou técnico em informática.
      Estudei java em 2014 java SE creio eu e um pouco de EE que foi com JSP e TomCat
      Queria que alguém tirasse minha duvidas pois java para web é bem extenso:
      O que é maven?
      O que é servlet, o que muda de jsf para jsp?
      O que é glassfish?
      Diferença do jdbc para jpa?
      O que é Spring? Diferença do boot para security?
      O que é JWT?
      O Jboss seria tipo o apache tomcat?
      O que é javabeans? E hibernate?
      E por ultimo o que é um webservice em Jax-rs?? Eu só conheco ws em xml
      No tecnico eu usava a IDE eclipse, agora já vi no fórum recomendações pelo Intellij IDEA ultimate?
    • Por renatorv
      Tenho a seguinte string json: {
          "114":[
              {"ID":"4","FILIAL":"02","NUM_PEDIDO":"114","CODIGO_PRODUTO":"3531","DESCRICAO":"REFR COCA COLA 2L","QUANT":"3","PRECO_UNITARIO":"5.99","PRECO_TOTAL":"17.97","STATUS":"A"},
              {"ID":"5","FILIAL":"02","NUM_PEDIDO":"114","CODIGO_PRODUTO":"3532","DESCRICAO":"REFR COCA COLA 350ML","QUANT":"1","PRECO_UNITARIO":"2.35","PRECO_TOTAL":"1.35","STATUS":"A"},
              {"ID":"6","FILIAL":"02","NUM_PEDIDO":"114","CODIGO_PRODUTO":"2213","DESCRICAO":"ARROZ CRISTAL 5KG","QUANT":"2","PRECO_UNITARIO":"15.48","PRECO_TOTAL":"30.96","STATUS":"A"}
              ],
          
          "115":[
              {"ID":"1","FILIAL":"02","NUM_PEDIDO":"115","CODIGO_PRODUTO":"3531","DESCRICAO":"REFR COCA COLA 2L","QUANT":"3","PRECO_UNITARIO":"5.99","PRECO_TOTAL":"17.97","STATUS":"A"},
              {"ID":"2","FILIAL":"02","NUM_PEDIDO":"115","CODIGO_PRODUTO":"3532","DESCRICAO":"REFR COCA COLA 350ML","QUANT":"1","PRECO_UNITARIO":"5.99","PRECO_TOTAL":"17.97","STATUS":"A"},
              {"ID":"3","FILIAL":"02","NUM_PEDIDO":"115","CODIGO_PRODUTO":"2213","DESCRICAO":"ARROZ CRISTAL 5KG","QUANT":"2","PRECO_UNITARIO":"15.48","PRECO_TOTAL":"30.96","STATUS":"A"}
              ]
      }
       
      preciso quebrá-la em dois objetos e montar um html com esses dados, através de um loop pois podem vir mais de dois objetos. Alguém já enfrentou isso?
    • Por ademar
      Boa noite!
       
      Estou com problema no meu projeto. Tenho um botão Mesa1 que estar no Jpanel na Tela Principal,  esse botão quando clicado chama o form frmvendas dentro do  frame Interno  e muda de cor , nesse frame interno tem um botão FINALIZAR VENDAS. O que quero saber é o seguinte: ao finalizar a venda clicando no botão FINALIZAR VENDAS, como faço pra setar o botão Mesa1 que está na Tela Principal.
       
       
      Agradeço a quem me ajudar.
       
×

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: