Chronos
Aktives Mitglied
Hallo Forum,
ich bin gerade dabei mir ein Textfeld zu erstellen, welches bei Eingabe auf den Typ einer Kreditkarte prüft,
also nur ob es eine Visa, Mastercard usw. ist.
Das ganze eigentlich genauso wie hier:
http://bradfrost.com/demo/single-cc/
http://bradfrost.com/demo/single-cc/assets/scripts/app.js ab Zeile 24
Ich möchte das ganze ohne jQuery schreiben und bin jetzt an dem Punkt, an dem ich den übergebenen Wert mit dem regulären Ausdrücken im Objekt vergleiche.
Wenn keiner der Ausdrücke zutrifft, möchte ich einfach nur 'default' zurückgeben.
Wenn ich 4 eingebe bekomme ich 'visa' zurück, wenn ich 5 eingebe bekomme ich 'default' zurück, was noch richtig wäre, wenn ich jetzt allerdings noch zu der 5 eine 1-5 eingebe, bekomme ich noch ein mal 'default' zurück.
Das komische ist jetzt, wenn ich den else-Zweig weg lasse bekomme ich bei 5 default und dann bei noch mal 5 also 55 'mastercard' aber wieso, das kann doch gar nicht sein?
Hier noch ein JS Bin dazu: http://jsbin.com/cofewa/1/edit?html,js,console,output
Ich verstehe mein Problem ehrlich gesagt gar nicht
wäre echt froh wenn mir jemand sagt, was ich falsch mache.
ich bin gerade dabei mir ein Textfeld zu erstellen, welches bei Eingabe auf den Typ einer Kreditkarte prüft,
also nur ob es eine Visa, Mastercard usw. ist.
Das ganze eigentlich genauso wie hier:
http://bradfrost.com/demo/single-cc/
http://bradfrost.com/demo/single-cc/assets/scripts/app.js ab Zeile 24
Ich möchte das ganze ohne jQuery schreiben und bin jetzt an dem Punkt, an dem ich den übergebenen Wert mit dem regulären Ausdrücken im Objekt vergleiche.
Wenn keiner der Ausdrücke zutrifft, möchte ich einfach nur 'default' zurückgeben.
Code:
window.onload = function(){
getTextfield();
};
function getTextfield() {
var txtField = document.getElementById('cc-field');
txtField.addEventListener("keyup", function(){
console.log(checkCC(this.value));
});
}
function checkCC(number) {
// Object with cc-RegEx'
var ccRegEx = {
'visa': /^4/,
'mastercard': /^5[1-5]/
};
for (var key in ccRegEx) {
// Pattern to test, String
if (ccRegEx[key].test(number)) {
return key;
} else {
return 'default';
}
}
}
Wenn ich 4 eingebe bekomme ich 'visa' zurück, wenn ich 5 eingebe bekomme ich 'default' zurück, was noch richtig wäre, wenn ich jetzt allerdings noch zu der 5 eine 1-5 eingebe, bekomme ich noch ein mal 'default' zurück.
Das komische ist jetzt, wenn ich den else-Zweig weg lasse bekomme ich bei 5 default und dann bei noch mal 5 also 55 'mastercard' aber wieso, das kann doch gar nicht sein?
Hier noch ein JS Bin dazu: http://jsbin.com/cofewa/1/edit?html,js,console,output
Ich verstehe mein Problem ehrlich gesagt gar nicht
