webForumDet fria alternativet

Satt ihop två script - får det inte att funka i skarven.

JavaScript

2 svar · 635 visningar · startad av tovelainen

Medlem sedan mars 2003137 inlägg
Frågan#1

Hej
Jag har försökt sätta ihop 2 skript. Nu funkar det inte alls.
Det gick åt skogen när jag lade till övre delen som ska kolla av om personnumret är ok.
Jag ville att det skulle funka med ett enda functions anrop från onSubmit.

Nu är det nog här det går fel:
if (!validatePNum(document.f.personnumber.value))

Här kommer hela klabbet. Nån som orkar? Skulle bli så glad!

<script type="text/javascript" language="javascript">
<!--
function validatePNum(sPNum)
{
  var numbers = sPNum.match(/^(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)(\d)$/);
  var checkSum = 0;

  var d = new Date();
  if (!isDate(sPNum.substring(0,4),sPNum.substring(4,6),sPNum.substring(6,8))) {
    alert("Datumet " + sPNum.substring(0,8) + " är inte korrekt.");
    return false;
  }

  if (numbers == null) { return false; }

  var n;
  for (var i = 3; i <= 12; i++)
  {
    n=parseInt(numbers[i]);
    if (i % 2 == 0) {
      checkSum+=n;
    } else {
      checkSum+=(n*2)%9+Math.floor(n/9)*9
    }
  }

  if (checkSum%10==0) { return true;}
  return false;
}

function getYear(y) { return (y < 1000) ? y + 1900 : y; }

function isDate(year, month, day)
{
  month = month - 1; // 0-11 in JavaScript
  var tmpDate = new Date(year,month,day);
  if ( (getYear(tmpDate.getYear()) == year) &&
  (month == tmpDate.getMonth()) &&
  (day == tmpDate.getDate()) )
    return true;
  else
    return false;
}

function checkregister(){
	var f = document.registerForm;
	
	if (!validatePNum(document.f.personnumber.value))
	{
		alert ("Vänligen fyll i korrekt personnummer.");
		f.elements['personnumber'].focus;
		return false;
	}

	if( f.elements['firstname'].value == "")
	{
		alert ("Vänligen ange ditt förnamn.");
		f.elements['firstname'].focus;
		return false;
	}

	var mail = f.elements['email'].value;
	if ( mail != "" ) {
		if( ( mail.indexOf( '@') == -1 ) || ( mail.indexOf( '.') == -1 ) || ( mail.indexOf( '@') < 1 ) ||  ( mail.indexOf( '.') < 1 )  ) 
	{
		f.elements['email'].style.backgroundColor = '#eaeaea';
		alert ("Vänligen ange en korrekt e-postadress om du har någon. Annars lämna fältet tomt."); 
		f.elements['email'].focus();
		return false;		
	}
	else return true;	
	}	
}
//-->
</script>

<form action="#" id="registerForm" onsubmit="return checkregister();" name="registerForm">
<input name="personnumber" type="text">
<input name="email" type="text">
<input name="firstname" type="text">
<input value="Klicka" type="Submit" />
Medlem sedan dec. 2004736 inlägg
#2
var f = document.registerForm;
	
	if (!validatePNum(document.f.personnumber.value))

Du definierar f som document.registerForm, vilket betyder att början av argumentet i if-satsen blir: document.document.f....

Ändra till:

if (!validatePNum(f.personnumber.value))

så bör det funka!

Medlem sedan mars 2003137 inlägg
#3

Underbara människa!
Tusen tack Ledel - funkar fint nu!
/T

264 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
118 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
125 ms — ändringar (db)