Rekeningnummer javascript

Status
Niet open voor verdere reacties.

NBB-SHAGGER

Gebruiker
Lid geworden
30 okt 2003
Berichten
43
Hey ik heb een probleem die ik op moet lossen

we hebben een form... en we moeten een rekeningnummer controleren maar als iemand een gironummer heeft moet het ook werken.

heeft iemand een idee hoe de fuctie moet zijn...???

alvast bedankt... !!
 
een giro nummer is korter toch ?
dus dan zal hij een error geven omdat je controleerd naar het antal cijfers neem ik aan
Je kan dus gebruik maken van bijvoorbeeld een letter P
dus als iemand een P invuld hoeft hij niet meer te controleren naar de bank nummers default cijfers maar naar de giro nummer default cijfer
Dus denk dat je met een if then else al weer een stukje verder kan ?

Of controleer je uit een database ?
 
Nee niet uit een database....

met de if en else statement kom ik al een eind verder :D
 
De elfproef is een test die in het Nederlandse elektronische betalingsverkeer wordt uitgevoerd op 9- en 10-cijferige bankrekeningnummers, om te controleren of het nummer een geldig rekeningnummer kan zijn.

De elfproef wordt als volgt uitgevoerd. Bij een elfproef worden de cijfers "gewogen" bij elkaar opgeteld. dat wil zeggen afhankelijk van de positie van het cijfer wordt het met een afgesproken waarde vermenigvuldigd. De afzonderlijke resultaten worden bij elkaar opgeteld en gedeeld door 11. De rest van deze deling moet gelijk zijn aan 0.

De elfproef dient ervoor om te controleren of er niet 2 cijfers zijn verwisseld bij het invoeren van een rekeningnummer.

Voorbeelden van een elfproef:

Controle bankrekeningnummer

Van rechts naar links geteld, wordt het eerste cijfer van het rekeningnummer met 1 vermenigvuldigd, het tweede met 2, het derde met drie, enzovoorts. Deze producten worden bij elkaar opgeteld, en gedeeld door 11. De rest van deze deling moet gelijk zijn aan 0.

Rekeningnummer 73.61.60.221

7 *9 + 3 *8 + 6 *7 + 1 *6 + 6 *5 + 0 *4 + 2 *3 + 2 *2 + 1 *1 = 176.
Delen door 11 geeft rest 0.

Voor het controleren van een gironummer, geldt het volgende:
Is het rekeningnummer kleiner dan 100.000.000, dan is het een gironummer. Elk nummer onder de honderd miljoen is in dit geval geldig. Voor gironummers geldt geen controle.
Slechts de Postbank c.q. ING kan controleren of dit nummer geldig is. Het moet dan geregistreerd staan.

Maak twee radiobuttons aan waarin je aangeeft of het een bank- of gironummer betreft. Is het een gironummer, dan voer je alleen de controle uit dat het getal kleiner moet zijn dan 100.000.000. Is het een banknummer, dan moet het gelijk of groter zijn aan 100.000.000 en voer je de elfproef uit.
 
maar hoe moet ik dit forumleren..??

ik kom hier niet echt uit.... ik bedoel "hoe ik dit in een functie kan zetten..?? "


groeten...
 
Code:
<html><head><title>Elf-Proef</title>

<script language="JavaScript1.3">
<!--
function checkBank() {
	var b = document.elform.bankno.value;
	var total = 0;
	b = removeDots( b );
	var j = b.length;
	for( var i = 0; i < b.length; i++ ) {
		total += b.charAt( i ) * j;
		j -= 1;
	}
	if( ( total % 11 ) != 0 ) {
		alert( "Not a valid bank account!" );
	}
}

function removeDots( param ) {
	var l = param.length;
	var bankacct = "";
	for( var i = 0; i < l; i++ ) {
		bankacct += param.charAt( i ) != "." ? param.charAt( i ) : "";
	}
	return bankacct;
}
-->
</script>

</head>

<body topmargin=50 leftmargin=25>

<form name=elform>
<input type=text name=bankno charwidth=25 value="73.61.60.221">
<br><br>
<input type=button name=bankbtn value="Check" onclick="checkBank()">

</form>

</body>
</html>
 
Laatst bewerkt:
AAh Toppy:thumb:

We hebben het voor elkaar... dit hebben wij:

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Banktest.html</title>

<script language="javascript">

function elfproef(nr){
var getal = ""
for (i = 0; i < nr.length; i++) {
var t = nr.substr(i, 1)
if (t != "."){
if (t < "0" || t > "9"){
break;
}else{
getal += t;
}
}
}

if (getal.length == 0){
alert("rekeningnummer bevat ongeldige tekens");
}else{
if (getal == 0){
alert("rekeningnummer is nul");
}else{
if (getal.length <= 7){
////Giro valt verder niet te controleren.
}else{
if (getal.length == 8){
alert("rekeningnummer bevat te weinig of te veel tekens");
}else{
if (getal.length > 9){
alert("rekeningnummer bevat te veel tekens");
}else{
var s = 0;
for (i = 0; i < getal.length; i++){
s += (9 - i) * parseInt(getal.substr(i, 1))
}
if(s % 11){
alert("rekeningnummer voldoet niet aan de elf-proef");
}
}
}
}
}
}
}

</script>

</head>

<body>
<script language="javascript">
getal = prompt("voer een getal in");
elfproef(getal);
</script>


</body>
</html>
 
Heb je hier nog wat aan?
Code:
function checkNr() {
 var n = document.f.nr; n.value = n.value.replace(/[^\d\.]/g,'');
 var c = n.value.replace(/\D/g,'').split(''), a = c.length, e = 0;
 if (a == 9) for (var i = 0; i < 9; i++) e += (9 - i) * c[i];
 if(a < 6 || a == 8 || e % 11 != 0 ||  a > 9) {
  alert('U heeft een ongeldig bank- of gironummer ingevuld');
  return false;
  };
 return true;
 };


<form name="f" onsubmit="return checkNr()">
<input type="text" name="nr" size="24" value="Bank 123.456.789"><br><br>
<input type="submit" value="Verzenden"> <input type="reset" value="Wissen">
</form>
onsubmit="return checkNr()" controleert het formulier voor verzending, een return false; voorkomt verzending.

.replace(/\D/g,'') vervangt niet-cijfers door lege strings = wist alles behalve cijfers. :)

Zoals: var getal = nr.replace(/\D/g,'');

Voor banknummers heb ik 9 cijfers met elfproef (1e cijfer mag nul zijn), voor gironummers 6 of 7 cijfers.


Vr.Gr. Egel.

Bijlage is de code in een html pagina:
 

Bijlagen

  • bank_en_gironummer_controle.html.txt
    892 bytes · Weergaven: 95
'k Vroeg me al af waar je bleef.

Dat de mijne compacter kon (door de tweede functie meteen in de eerste op te nemen) wist ik wel.
Toch ga je net weer iets verderderder.
 
Heb je hier nog wat aan?
Code:
function checkNr() {
 var n = document.f.nr; n.value = n.value.replace(/[^\d\.]/g,'');
 var c = n.value.replace(/\D/g,'').split(''), a = c.length, e = 0;
 if (a == 9) for (var i = 0; i < 9; i++) e += (9 - i) * c[i];
 if(a < 6 || a == 8 || e % 11 != 0 ||  a > 9) {
  alert('U heeft een ongeldig bank- of gironummer ingevuld');
  return false;
  };
 return true;
 };


<form name="f" onsubmit="return checkNr()">
<input type="text" name="nr" size="24" value="Bank 123.456.789"><br><br>
<input type="submit" value="Verzenden"> <input type="reset" value="Wissen">
</form>
onsubmit="return checkNr()" controleert het formulier voor verzending, een return false; voorkomt verzending.

.replace(/\D/g,'') vervangt niet-cijfers door lege strings = wist alles behalve cijfers. :)

Zoals: var getal = nr.replace(/\D/g,'');

Voor banknummers heb ik 9 cijfers met elfproef (1e cijfer mag nul zijn), voor gironummers 6 of 7 cijfers.


Vr.Gr. Egel.

Bijlage is de code in een html pagina:



Hoho, gironummers kan je niet valideren op 6 of 7 cijfers!
De gironummering begint bij 1 (van de koningin?). Ander voorbeeld: giro 444, waar je geld op mag storten bij een beetje ramp. Dat zijn maar drie posities.

Bankrekeningnummers kan je wel valideren. Hierboven staan voorbeelden van gestripte gevalideerde banknummers. Dan geef ik er nog een met puntjes, en misschien iets beter leesbaar voor de iets minder gevorderden:

Code:
function validateBankNr(obj) {
  var result=0; // declare result var
  var x = obj.value.replace(/\D/g, "");  //remove all non-digit characters
  if (x.length!=9 || x==0) { // bank values have 9 positions and not all zero's
    return false;
  }
  result = ((x[0]*9) + (x[1]*8) + (x[2]*7) + (x[3]*6) + (x[4]*5) + (x[5]*4) + (x[6]*3) + (x[7]*2) + (x[8]*1)); // eleven test
  if (result % 11 != 0) {
    return false;
  }
  return x.substr(0,4)+"."+x.substr(4,2)+"."+x.substr(6); // return valid dotted value
}
obj is het element dat de gebruiker heeft ingevuld. De functie geeft een bankrekeningnummer met puntjes terug als die valide is, of anders false.


Je kunt die waarde terugzetten in het invoer-element:

Code:
var validBankNr = validateBankNr(obj);
if (validBankNr) {
  obj.value = validBankNr
} else {
  alert('Doe wat aan dat rekeningnummer!');
};


Veel succes, Tonko Boekhoud van Klik op [OK]
 
topic is van 2005.
Geen oude topics omhoog halen.
lees de huisregels.
 
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan