Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
js_checkiban [2015/04/02 10:18] webproducer angelegt |
js_checkiban [2018/05/01 00:00] (aktuell) |
||
---|---|---|---|
Zeile 1: | Zeile 1: | ||
====== IBAN mit JavaScript validieren ====== | ====== IBAN mit JavaScript validieren ====== | ||
- | <file js checkIBAN.js> | + | <file javascript checkIBAN.js> |
- | function checkIBAN( ElementName ) | + | function checkIBAN( IBAN ) |
{ | { | ||
- | var elements = document.getElementsByName( ElementName ); | + | let mod = 0; |
- | var Anz = elements.length, i = 0; mod = 0; | + | let letter = ""; |
- | var IBAN = "", letter = "", block = ""; | + | let block = ""; |
- | for( i=1;i<Anz;i++ ) // vom 2. bis zum letzten Block | + | IBAN = IBAN.replace(/ /g, ''); // alle Leerzeichen entfernen |
- | IBAN += elements[i].value; // zu einer Zahl zusammenfassen | + | |
- | IBAN += elements[0].value; // erster Block als letzter anfügen | + | part1 = IBAN.substr( 0, 4 ); // ersten 4 Zeichen |
+ | part2 = IBAN.substr( 4 ); // alle anderen Zeichen | ||
- | for( i=0; i<=26;i++ ) // für jeden Buchstaben im Alphabet einen Schleifendurchlauf | + | IBAN = part2 + part1; // erster Block als letzter anfügen |
- | { | + | |
- | letter = String.fromCharCode( 65+ i ); // Buchstabe vom ASCII-Code ermitteln | + | |
- | IBAN = IBAN.replace( letter, String( i+10 ) ); // Buchstabe gegen Zahl ersetzen | + | |
- | } | + | |
- | var Length = IBAN.length; // neue Länge des IBAN ermitteln (wurde durch 2stellige Zahlen länger) | + | for( a=65; a<=90; a++ ) // für jeden Buchstaben im Alphabet einen Schleifendurchlauf |
+ | { | ||
+ | letter = String.fromCharCode( a ); // Buchstabe vom ASCII-Code ermitteln | ||
+ | regexp = new RegExp( letter, 'g' ); // Parameter "g" = global match: find all mateches | ||
+ | IBAN = IBAN.replace( regexp, String( a-55 ) ); // Buchstabe gegen Zahl ersetzen | ||
+ | } | ||
- | for( i=0; i<=Length; i=i+9 ) // Hilfsmethode für die Berechnung der Prüfziffer (9er-Blöcke) | + | let Length = IBAN.length; // neue Länge des IBAN ermitteln (wurde durch 2stellige Zahlen länger) |
- | { | + | |
- | if( mod == 0 ) // im 1. Durchgang 9 Zeichen ziehen | + | |
- | block = IBAN.substr( i, 9 ); | + | |
- | else if( mod < 10 ) // bei einstelligem Restwert die nächsten 8 Zeichen ziehen | + | |
- | { | + | |
- | block = String( mod ) + IBAN.substr( i, 8 ); | + | |
- | i--; // Position um 1 Zeichen nach vorne verschieben | + | |
- | } | + | |
- | else // bei zweistelligem Restwert nur noch 7 Zeichen ziehen | + | |
- | { | + | |
- | block = String( mod ) + IBAN.substr( i, 7 ); | + | |
- | i=i-2; // Position um 2 Zeichen nach vorne verschieben | + | |
- | } | + | |
- | mod = block % 97; // Restwert ermitteln | + | for( i=0; i<=Length; i=i+9 ) // Hilfsmethode für die Berechnung der Prüfziffer (9er-Blöcke) |
- | } | + | { |
+ | if( mod === 0 ) // im 1. Durchgang 9 Zeichen ziehen | ||
+ | { | ||
+ | block = IBAN.substr( i, 9 ); | ||
+ | } | ||
+ | else if( mod < 10 ) // bei einstelligem Restwert die nächsten 8 Zeichen ziehen | ||
+ | { | ||
+ | block = String( mod ) + IBAN.substr( i, 8 ); | ||
+ | i--; // Position um 1 Zeichen nach vorne verschieben | ||
+ | } | ||
+ | else // bei zweistelligem Restwert nur noch 7 Zeichen ziehen | ||
+ | { | ||
+ | block = String( mod ) + IBAN.substr( i, 7 ); | ||
+ | i=i-2; // Position um 2 Zeichen nach vorne verschieben | ||
+ | } | ||
- | if( mod == 1 ) // sofern die Prüfziffer korrekt ist muss der Restwert 1 ergeben | + | mod = block % 97; // Restwert ermitteln |
- | return true; | + | } |
- | else | + | |
- | alert( "Die IBAN ist ungültig!" ); | + | |
- | return false; // wird nur erreicht, wenn Script oben nicht mit 'true' beendet wird | + | if( mod === 1 ) // sofern die Prüfziffer korrekt ist muss der Restwert 1 ergeben |
+ | { | ||
+ | return true; | ||
+ | } | ||
+ | else | ||
+ | { | ||
+ | alert( "Die IBAN ist ungültig!" ); | ||
+ | } | ||
+ | |||
+ | return false; // wird nur erreicht, wenn Script oben nicht mit 'true' beendet wird | ||
} | } | ||
</file> | </file> |