---
title: "Satt ihop två script - får det inte att funka i skarven."
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/182246-satt-ihop-två-script-får-det-inte-att-funka-i-skarven"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "tovelainen"
published: "2010-01-31T18:58:38.000Z"
updated: "2010-02-01T10:00:06.000Z"
replies: 2
views: 644
page: 1
pages: 1
language: "sv-SE"
site: "webForum — webforum.nu"
rights: "Upphovsrätten till varje inlägg tillhör dess författare."
attribution: "Citera som: webForum, https://www.webforum.nu/amne/javascript/182246-satt-ihop-två-script-får-det-inte-att-funka-i-skarven"
---

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

## #1 — tovelainen, 2010-01-31T18:58Z

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" />
```

Permalänk: https://www.webforum.nu/p/182246

## #2 — Ledel, 2010-01-31T21:37Z

```
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!

Permalänk: https://www.webforum.nu/p/2224780

## #3 — tovelainen, 2010-02-01T10:00Z

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

Permalänk: https://www.webforum.nu/p/2224807

---

Tråden på webben: https://www.webforum.nu/amne/javascript/182246-satt-ihop-två-script-får-det-inte-att-funka-i-skarven
