JSFiddle - React, Tailwind, and code Playground

by RicardoGeek

HTML

<input type="text" name = "checkout.cardNumber" id="ccnum" />
<div id="type"></div>

JavaScript

$("#ccnum").keyup(function(e){
    var num = $(this).val().toString();
    var charCount = num.length;
    
    /* VALIDACION DE TIPO */
    if(charCount == 1) { 
        if(num == "4"){
            $("#type").html("VISA");
        }
    }
    if(charCount == 2){
        if(num == "34" || num == "37"){
            $("#type").html("AMEX");
        } else if( num == "51" || num == "55" || num == "53"){
            $("#type").html("MASTER CARD");
        } else if( num == "55" ){
            $("#type").html("DISCOVER");
        }
    }
    if(charCount == 3){
        if(num == "644"){
             $("#type").html("DISCOVER")
        }
    }
    if(charCount == 4){
        if(num == "6011"){
            $("#type").html("DISCOVER");
        }
    }
    /* !VALIDACION DE TIPO */
    
    /* ALGORITMO */
    if(charCount == 13 || charCount == 14 || charCount == 15 || charCount == 16){
        var valid = isValid(num, charCount);
        if(valid){
            $("#type").html("valida");
            $("input").attr("name", "checkout.cardNumber").attr("class", "valid-card");
        } else {
            $("#type").html("invalida");
            $("input").attr("name", "checkout.cardNumber").attr("class", "invalid-card");
        }
    }
    /* !ALGORITMO */    
});

function isValid(ccNum, charCount){
    var double = true;
    var numArr = [];
    var sumTotal = 0;
    for(i=0; i<charCount; i++){
        var digit = parseInt(ccNum.charAt(i));
        
        if(double){
            digit = digit * 2;
            digit = toSingle(digit);
            double = false;
        } else {
            double = true;
        }
        numArr.push(digit);
    }
    
    
    for(i=0; i<numArr.length; i++){
        sumTotal += numArr[i];
    }
    var diff = eval(sumTotal % 10);
    console.log(diff);
    console.log(diff == "0");
    return (diff == "0");
}

function toSingle(digit){
    if(digit > 9){
        var tmp = digit.toString();
        var d1 = parseInt(tmp.charAt(0));
   ...