login  Naam:   Wachtwoord: 
Registreer je!
 Forum

11-proef controleert alleen aantal tekens

Offline yolk - 09/03/2007 12:27
Avatar van yolkHTML interesse Bij het uitvoeren van onderstaande 11-proef krijg je een melding als het ingevoerde nummer niet 9 karakters lang is. Maar als deze het wel is, wordt niet gekeken of dit een bankrekeningnummmer is. Kennelijk wordt alleen gekeken of het ingevoerde nummer 9 karakters heeft, en verder niet.
Ik heb gezocht met google naar een 11-proef, maar kom alleen bij niet goed werkende versies of bij php-scripts uit.
Onderstaand script werkt in principe wel, maar voor de helft? :-D
Hoe krijg ik de andere helft werkend?

  1. if (document.getElementById('cursist_rekening_type_b').checked == true)
  2. {
  3. var bankrekeningnummer = document.getElementById('cursist_rekening_nr').value;
  4. bankrekeningnummer=bankrekeningnummer.replace(/\D/, "");
  5. aantal_tekens=bankrekeningnummer.length;
  6. var som=0;
  7.  
  8. for (i=1; i<10; i++)
  9. {
  10. getal=bankrekeningnummer.charAt(i-1);
  11. som+=getal*(10-i);
  12. }
  13.  
  14. if (som % 11!=0 && aantal_tekens!=9)
  15. {
  16. alert ( 'Het door u opgegeven banknummer ' +bankrekeningnummer +' is geen geldig rekeningnummer.' );
  17. }
  18. else
  19. {
  20. document.bestellen.submit();
  21. }
  22. }


Ik heb ipv "som % 11!=0 && aantal_tekens!=9" geprobeerd met "som % 11!=0 || aantal_tekens!=9", maar dat maakt niet uit. Hetzelfde probleem bllijft.

1 antwoord

Gesponsorde links
Offline Thomas - 09/03/2007 12:49
Avatar van Thomas Moderator Deze elfproef heb ik eens een keer geschreven:

  1. // sofi nummer, 9 cijfers en voldoet aan de "elfproef" - (9A + 8B + 7C + 6D + 5E + 4F + 3G + 2H - I) % 11 == 0
  2. function check_sofi(frm, elt)
  3. {
  4. var ret = true;
  5. var str;
  6.  
  7. // init
  8. if(typeof(frm) == "object")
  9. {
  10. str = frm.elements[elt].value;
  11. }
  12. else
  13. {
  14. str = document.forms[frm].elememts[elt].value;
  15. }
  16.  
  17. if(str.length != 9)
  18. {
  19. ret = false;
  20. window.alert("Een sofinummer bestaat uit 9 karakters.");
  21. frm.elements[elt].focus();
  22. }
  23. else
  24. {
  25. if(!is_numeric(str, false))
  26. {
  27. ret = false;
  28. window.alert("Het opgegeven sofinummer bestaat niet enkel uit cijfers.");
  29. frm.elements[elt].focus();
  30. }
  31. else
  32. {
  33. var sum = 0;
  34. for(var i=0; i < 8; i++)
  35. {
  36. sum += (9-i) * parseInt(str.charAt(i));
  37. }
  38. sum -= parseInt(str.charAt(8));
  39.  
  40. if(!((sum % 11) == 0))
  41. {
  42. ret = false;
  43. window.alert("Het opgegeven sofinummer is geen geldig sofinummer.");
  44. frm.elements[elt].focus();
  45. }
  46. }
  47. }
  48. return ret;
  49. }
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.193s