[...]
...komisch, eigentlich hatte ich die Antwort schon einmal gepostet...:(
Also, vielen Dank erst einmal fürs Lesen & Gedanken machen...;)
Das Ursprungs-Script ist in Clipper oder PL/SQL oder irgendeiner ähnlichen, masoschistische Verlangen vorraussetzenden Sprache geschrieben. Es dient der Kundenkartenprüfung mit einem Modulo10-Verfahren und landete irgendwann einmal kommentarlos (und ohne Angabe der verwendeten Sprache...) auf meinem Tisch und stammt von einem Unternehmen, dass Kundenkartensysteme betreibt.
Wir haben das seinerzeit in VBS implementiert und nutzen es seither im ASP-Umfeld, um die Kundencard-Daten der Abonnenten einer großen deutschen regionalzeitung zu testen...;)
Jetzt brauche ich den Kram allerdings auch einmal clientseitig.... und war aus lauter Verzweiflung schon nahe daran, das ganze in AJAX zu machen und die Berechnung auf dem Server erledigen zu lassen. Aber: Ich habe es mittlerweile auch in JS fertig (s.u.)
Das Ursprungsscript fand sich übrigens auch schon einmal hier im Forum (<a href="http://forum.de.selfhtml.org/archiv/2006/3/t126106/#m813177">http://forum.de.selfhtml.org/archiv/2006/3/t126106/#m813177</a>)
So sieht meine JS-Implementierung jetzt aus:
function CheckCardNumber(CardNumber){
//Kundenkartencheck nach Modulo10 fuer AVS-Karten
//Falk Herrmann, sz-online.de
//herrmann(at)sz-online.de
var k=0;
var j=2;
var pz=0;
var z=CardNumber.length;
var checknummer=CardNumber.substr(z-1,1);
var CardNumber=CardNumber.substr(0,z-1);
var z=CardNumber.length;
var i;
while(z>0){
i=j*(""+CardNumber.substr(z-1,1));
z--;
if(i>=10) {
i=i-9;
}
k=k+i;
if(j==2) {
j=1;
}
else {
if(j==1){
j=2;
}
}
}
var t=k/10;
t=Math.floor(t);
k=10-(10*((k/10)-t))
if (k==10) {
pz=0;
}
else {
pz=k
}
if ((checknummer-pz)==0) {
return true;
}
else {
return false;
}
}
cul,
Falk