2011-03-07 16 views
10

Encontré esta sencilla función para devolver los 4 tipos de tarjetas de crédito más comunes.Jquery find credit card type

Siendo nuevo en jQuery, ¿qué plugin jQuery puedo usar para mostrar el tipo de tarjeta de crédito cuando un usuario ingresa un número de tarjeta de crédito en un campo de entrada?

function creditCardTypeFromNumber(num) { 
    // first, sanitize the number by removing all non-digit characters. 
    num = num.replace(/[^\d]/g,''); 
    // now test the number against some regexes to figure out the card type. 
    if (num.match(/^5[1-5]\d{14}$/)) { 
    return 'MasterCard'; 
    } else if (num.match(/^4\d{15}/) || num.match(/^4\d{12}/)) { 
    return 'Visa'; 
    } else if (num.match(/^3[47]\d{13}/)) { 
    return 'AmEx'; 
    } else if (num.match(/^6011\d{12}/)) { 
    return 'Discover'; 
    } 
    return 'UNKNOWN'; 
} 

¡Gracias!

Respuesta

4
$('#someTextBox').change(function() { 
    $('#someOutput').text(creditCardTypeFromNumber($(this).val())); 
}); 

Esta salida voluntad en algún elemento con id="someOutput" el resultado del cuadro de texto que dispara cuando el usuario cambia el texto en el elemento id="someTextBox".

+6

'change()' no se disparará hasta que la entrada de texto pierda el foco. Use keyup() en lugar de validación mientras escribe – Hussein

+0

Sé que es un poco viejo, pero estaba buscando algo como esto. Solo quería apuntar, @Daniel A. White Necesitas un extra) al final de la línea 2;) – stinkysGTI

0

Además, para su información, la respuesta en this thread (link) tiene algunas expresiones regulares para otros tipos de tarjetas, así como una explicación impresionante de los números de tarjetas de crédito.

Aquí es una función que sólo se activa después de que entraron al menos 6 dígitos (los utilizados para reconocer el tipo de tarjeta):

$('#CardNumber').keyup(function(){ 
    if($(this).val().length >= 6){ 
     cardType = creditCardTypeFromNumber($(this).val()); 
    } 
});