Funkcja pozwalająca sprawdzać poprawność NIPu w trakcie wpisywania w textbox.
Korzysta z funkcji is_numeric(), która zwraca true, gdy ciąg znaków jest liczbą (analogicznie do funkcji o tej samej nazwie w PHP).
<script language="JavaScript"> function is_numeric(sText) { var ValidChars = "0123456789."; var IsNumber=true; var Char; for (i = 0; i < sText.length && IsNumber == true; i++) { Char = sText.charAt(i); if (ValidChars.indexOf(Char) == -1) IsNumber = false; } return IsNumber; } function checkNIP(source,target) { var tb=document.getElementById(source).value; var err=document.getElementById(target); var nipnodash=""; for (licz=0; licz<tb.length; licz++) if (is_numeric(tb[licz])==true) nipnodash=nipnodash+tb[licz]; if (nipnodash.length<10) err.innerHTML="<b>Błędny NIP! Za mało cyfr!</b>"; if (nipnodash.length>10) err.innerHTML="<b>Błędny NIP! Za dużo cyfr!</b>"; if (nipnodash.length==10) { var wagi = new Array ("6","5","7","2","3","4","5","6","7"); var wynik = new Array(9); var suma=0; for (licz=0; licz<9; licz++) wynik[licz]=nipnodash[licz]*wagi[licz]; for (licz=0; licz<9; licz++) suma+=wynik[licz]; suma=suma%11; if (suma==nipnodash[9]) err.innerHTML=""; else err.innerHTML="<b>Podany NIP jest błędny! (nie przeszedł testu poprawności)</b>"; } } </script>
Powyższy kod należy wkleić pomiędzy tagi HEAD. W praktyce należy użyć go następująco:
<input name=nip id=nip onkeyup=checkNIP('nip','nipDIV');><div id=nipDIV></div>