16. januar 2004 - 11:09Der er
4 kommentarer og 1 løsning
Validering af et tal.
Grundlæggende: Et nr. består af 18 cifre, hvor det sidste ciffer er et check ciffer, der skal verificeres.
Beregning af, hvad checkcifferet bør være sker i fire trin:
1. Tag hvert ciffer i nummeret bortset fra det sidste (checkcifferet) og gang hvert af disse med hhv. 3 og 1 startende fra højre, således at ciffer 17 ganges med 3, ciffer 16 med 1, ciffer 15 med 3 osv.!
2. Adder hvert af resultaterne af multiplikationerne fra trin 1, således at der opnås en sum "B"!
3. Rund "B" op til nærmeste tal "C", som kan divideres med 10!
Følgende funktion skulle validere dit nummer, men det er et problem at tallet er så langt, der er for mange betydende cifre ift. hvad javascript umiddelbart kan håndtere.
Jeg har løst det ved at tage Aftagenr. som en tekststreng i stedet for et tal, hvis det er et problem har jeg ikke umiddelbart nogen løsning.
function validate (sNoToCheck) { var re = /\s*/ var aTempCheck = sNoToCheck.split(re) var iCheckSum = Number(aTempCheck.pop()) var iWeightedSum = 0
while (aTempCheck.length > 0) { iWeightedSum += 3 * Number(aTempCheck.pop()) if (aTempCheck.length > 0) { iWeightedSum += 1 * Number(aTempCheck.pop()) } } var iTempCheckSum = 10 - (iWeightedSum % 10)
Det er jeg glad for at høre - jeg satte den ikke som svar, for jeg var ikke sikker på om du kunne bruge det når det skulle være en tekststreng (selvom jeg ikke kan se hvordan det skulle fungere med et tal 8-) ).
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.