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>
Dodano 12/02/2009 o 16:38
Kategoria: JavaScript
Tagi: , , , ,