---
title: "Hjälp med formulär kontroll"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/125443-hjälp-med-formulär-kontroll"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "ConnyFox"
published: "2005-03-31T00:12:14.000Z"
updated: "2005-05-10T21:41:40.000Z"
replies: 15
views: 929
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/125443-hjälp-med-formulär-kontroll"
---

# Hjälp med formulär kontroll

## #1 — ConnyFox, 2005-03-31T00:12Z

jag har frågat långt ner i en tidigare tråd flera gånger men ingen har svarat, antar ingen orkade scrolla ner för det e ju inga svåra grejjer.

Detta är mina nuvarande kod

```
function validate(obj){
    return (
	Boolean(obj.elements["email"].value.indexOf('@') != -1 || alert("Ej giltlig Epost-adress"))  && 
	Boolean(/^\d+$/.test(obj.elements["postnr"].value) || alert("Endast siffror")) && 
	Boolean(new personnummer(obj.elements["personnr"].value).valid || alert("Ej giltigt personnummer")) && 
    Boolean(obj.elements["fornamn"].value != "" || alert("Inget förnamn ifyllt!")) &&
    Boolean(obj.elements["efternamn"].value != "" || alert("Inget efternamn ifyllt!")) && 
	Boolean(
	    (/\d{2,4}(\s|-|\\)?(\d\s*){5,8}/.test(obj.elements["hemtele"].value) || 
	    /\d{3}(\s|-|\\)?(\d\s*){7}/.test(obj.elements["mobtele"].value)) || 
	    alert("Vänligen ange åtminstone ett giltigt telefonnummer"))
    );
}
```

jag skulle vilja ha några tillägg.
\*Bättre emailkontroll, bara kolla så den innehåller @ e ju inte så bra.
\*Kontroll så att två fält är identiska (lösenord, lösenord igen)
\*Kontrollera så att ett fält innehåller minst 5 tecken och max 500 tecken.

tack på förhand, jag vet att detta inte är några problem för er o lösa ;)

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

## #2 — Peter S, 2005-04-01T13:24Z

```
/*
* isValidEmail() är hämtad från [url]www.jojoxx.net[/url]. Låt stå!
*/
String.prototype.isValidEmail = function(){
	return !!this.match(/^([a-zA-Z0-9]{1}([a-zA-Z0-9\.\-\_]*)[a-zA-Z0-9]{1})@([a-zA-Z0-9]{1}([a-zA-Z0-9\.\-\_]*)[a-zA-Z0-9]{1})\.([a-zA-Z]{2,4})$/)
}

function validate(obj){
    return (
	Boolean(obj.elements["email"].value.isValidEmail() || alert("Ej giltlig Epost-adress"))  && 
	Boolean(/^\d+$/.test(obj.elements["postnr"].value) || alert("Endast siffror")) && 
	Boolean(new personnummer(obj.elements["personnr"].value).valid || alert("Ej giltigt personnummer")) && 
    Boolean(obj.elements["fornamn"].value != "" || alert("Inget förnamn ifyllt!")) &&
    Boolean(obj.elements["efternamn"].value != "" || alert("Inget efternamn ifyllt!")) && 
	Boolean(
	    (/\d{2,4}(\s|-|\\)?(\d\s*){5,8}/.test(obj.elements["hemtele"].value) || 
	    /\d{3}(\s|-|\\)?(\d\s*){7}/.test(obj.elements["mobtele"].value)) || 
	    alert("Vänligen ange åtminstone ett giltigt telefonnummer")) && 
        Boolean((obj.elements["[b]passw[/b]"].value == obj.elements["[b]passw2[/b]"].value) || alert("Lösenorden överensstämmer ej!")) && 
        Boolean((obj.elements["[b]fältets_namn[/b]"].value.length >= 5 && obj.elements["[b]fältets_namn[/b]"].value.length <= 500) || alert("5 <= Fältets längd <= 500"))
    );
}
```

Glöm inte att använda funktionen *acceptera som slutgiltigt svar* när problemet är löst.

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

## #3 — ConnyFox, 2005-04-02T14:29Z

Funkade tyvärr inte helt bra..

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

## #4 — Cheguelin, 2005-04-02T16:54Z

ska det vara nödvändigt med alla Boolean?

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

## #5 — Peter S, 2005-04-02T18:23Z

Nej.

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

## #6 — ConnyFox, 2005-04-04T02:58Z

Hmm ok det där fungerade inte så bra, använder denna koden nu och funktionen dom saker som Ej fungerar är :
\*Kolla så antingen hemtele eller mobtele är ifyllt.
\*minst 5 tecken max 50

```
<script type="text/javascript">

// Object 'personnummer' by member Jojoxx ([url]www.jojoxx.net[/url]) at webForum.nu

function personnummer(nr){
	this.valid=false;
	if(!nr.match(/^(\d{2})(\d{2})(\d{2})\-(\d{4})$/)){ return false; }
	this.now=new Date(); this.nowFullYear=this.now.getFullYear()+""; this.nowCentury=this.nowFullYear.substring(0,2); this.nowShortYear=this.nowFullYear.substring(2,4);
	this.year=RegExp.$1; this.month=RegExp.$2; this.day=RegExp.$3; this.controldigits=RegExp.$4;
	this.fullYear=(this.year*1<=this.nowShortYear*1)?(this.nowCentury+this.year)*1:((this.nowCentury*1-1)+this.year)*1;
	var months = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if(this.fullYear%400==0||this.fullYear%4==0&&this.fullYear%100!=0){ months[1]=29; }
	if(this.month*1>12||this.day*1>months[this.month*1-1]){ return false; }
	this.alldigits=this.year+this.month+this.day+this.controldigits;
	var nn="";
	for(var n=0;n<this.alldigits.length;n++){ nn+=((((n+1)%2)+1)*this.alldigits.substring(n,n+1)); }
	this.checksum=0;
	for(var n=0;n<nn.length;n++){ this.checksum+=nn.substring(n,n+1)*1; }
	this.valid=(this.checksum%10==0)?true:false;
	this.sex=parseInt(this.controldigits.substring(2,3))%2;
}

/*
* isValidEmail() är hämtad från [url]www.jojoxx.net.[/url] Låt stå!
*/
String.prototype.isValidEmail = function(){
	return !!this.match(/^([a-zA-Z0-9]{1}([a-zA-Z0-9\.\-\_]*)[a-zA-Z0-9]{1})@([a-zA-Z0-9]{1}([a-zA-Z0-9\.\-\_]*)[a-zA-Z0-9]{1})\.([a-zA-Z]{2,4})$/)
}

function validate(obj){
    return (
	Boolean(obj.elements["email"].value.isValidEmail() || alert("Ej giltlig Epost-adress"))  && 
	Boolean(/^\d+$/.test(obj.elements["postnr"].value) || alert("Postnummret skall endast innehålla siffror")) && 
	Boolean(new personnummer(obj.elements["personnr"].value).valid || alert("Ej giltigt personnummer")) && 
	
    Boolean(obj.elements["fornamn"].value != "" || alert("Inget förnamn ifyllt!")) &&
    Boolean(obj.elements["efternamn"].value != "" || alert("Inget efternamn ifyllt!")) && 
    Boolean(obj.elements["adress"].value != "" || alert("Ingen adress ifyllt!")) &&
	Boolean(obj.elements["ort"].value != "" || alert("Ingen ort ifyllt!")) && 
	
    Boolean((obj.elements["password"].value == obj.elements["password2"].value) || alert("Lösenorden överensstämmer ej!")) && 
[B]
    Boolean((obj.elements["Username"].value.length >= 5 && obj.elements["username"].value.length <= 50) || alert("Fältet Användarnamn måste innehålla minst 5 tecken.")) &&
    Boolean((obj.elements["password"].value.length >= 5 && obj.elements["password"].value.length <= 50) || alert("Fältet lösenord måste innehålla minst 5 tecken.")) &&
Boolean(
	    (/\d{2,4}(\s|-|\\)?(\d\s*){5,8}/.test(obj.elements["hemtele"].value) || 
	    /\d{3}(\s|-|\\)?(\d\s*){7}/.test(obj.elements["mobtele"].value)) || 
	    alert("Vänligen ange åtminstone ett giltigt telefonnummer"))[/B]
	);
}

</script>
```

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

## #7 — Peter S, 2005-04-04T06:25Z

På ett ställe har du skrivit "Username" och på ett annat "username".

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

## #8 — ConnyFox, 2005-04-04T12:55Z

ja jo men sabbar det alla 3 kontroller verkligen? ;)

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

## #9 — Peter S, 2005-04-04T12:58Z

You tell me:

```
<script type="text/javascript">

// Object 'personnummer' by member Jojoxx ([url]www.jojoxx.net[/url]) at webForum.nu

function personnummer(nr){
	this.valid=false;
	if(!nr.match(/^(\d{2})(\d{2})(\d{2})\-(\d{4})$/)){ return false; }
	this.now=new Date(); this.nowFullYear=this.now.getFullYear()+""; this.nowCentury=this.nowFullYear.substring(0,2); this.nowShortYear=this.nowFullYear.substring(2,4);
	this.year=RegExp.$1; this.month=RegExp.$2; this.day=RegExp.$3; this.controldigits=RegExp.$4;
	this.fullYear=(this.year*1<=this.nowShortYear*1)?(this.nowCentury+this.year)*1:((this.nowCentury*1-1)+this.year)*1;
	var months = new Array(31,28,31,30,31,30,31,31,30,31,30,31);
	if(this.fullYear%400==0||this.fullYear%4==0&&this.fullYear%100!=0){ months[1]=29; }
	if(this.month*1>12||this.day*1>months[this.month*1-1]){ return false; }
	this.alldigits=this.year+this.month+this.day+this.controldigits;
	var nn="";
	for(var n=0;n<this.alldigits.length;n++){ nn+=((((n+1)%2)+1)*this.alldigits.substring(n,n+1)); }
	this.checksum=0;
	for(var n=0;n<nn.length;n++){ this.checksum+=nn.substring(n,n+1)*1; }
	this.valid=(this.checksum%10==0)?true:false;
	this.sex=parseInt(this.controldigits.substring(2,3))%2;
}

/*
* isValidEmail() är hämtad från [url]www.jojoxx.net[/url]. Låt stå!
*/
String.prototype.isValidEmail = function(){
	return !!this.match(/^([a-zA-Z0-9]{1}([a-zA-Z0-9\.\-\_]*)[a-zA-Z0-9]{1})@([a-zA-Z0-9]{1}([a-zA-Z0-9\.\-\_]*)[a-zA-Z0-9]{1})\.([a-zA-Z]{2,4})$/)
}

function validate(obj){
    return (
	Boolean(obj.elements["email"].value.isValidEmail() || alert("Ej giltlig Epost-adress"))  && 
	Boolean(/^\d+$/.test(obj.elements["postnr"].value) || alert("Postnummret skall endast innehålla siffror")) && 
	Boolean(new personnummer(obj.elements["personnr"].value).valid || alert("Ej giltigt personnummer")) && 
	
    Boolean(obj.elements["fornamn"].value != "" || alert("Inget förnamn ifyllt!")) &&
    Boolean(obj.elements["efternamn"].value != "" || alert("Inget efternamn ifyllt!")) && 
    Boolean(obj.elements["adress"].value != "" || alert("Ingen adress ifyllt!")) &&
	Boolean(obj.elements["ort"].value != "" || alert("Ingen ort ifyllt!")) && 
	
    Boolean((obj.elements["password"].value == obj.elements["password2"].value) || alert("Lösenorden överensstämmer ej!")) && 

    Boolean((obj.elements["username"].value.length >= 5 && obj.elements["username"].value.length <= 50) || alert("Fältet Användarnamn måste innehålla minst 5 tecken.")) &&
    Boolean((obj.elements["password"].value.length >= 5 && obj.elements["password"].value.length <= 50) || alert("Fältet lösenord måste innehålla minst 5 tecken.")) &&
Boolean(
	    (/\d{2,4}(\s|-|\\)?(\d\s*){5,8}/.test(obj.elements["hemtele"].value) || 
	    /\d{3}(\s|-|\\)?(\d\s*){7}/.test(obj.elements["mobtele"].value)) || 
	    alert("Vänligen ange åtminstone ett giltigt telefonnummer"))
	);
}

</script>

<form onsubmit="return validate(this)">
email <input name="email"><br>
postnr <input name="postnr"><br>
personnr <input name="personnr"><br>
fornamn <input name="fornamn"><br>
efternamn <input name="efternamn"><br>
adress <input name="adress"><br>
ort <input name="ort"><br>
password <input name="password"><br>
password2 <input name="password2"><br>
usernamn <input name="username"><br>
hemtele <input name="hemtele"><br>
mobtele <input name="mobtele"><br>
<input type="submit">
</form>
```

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

## #10 — ConnyFox, 2005-04-20T23:27Z

Ok får tacka det där funkade skitbra MEN jag behöver även en som kontrolerar att det inte innehåller något av följande tecken
 /\\:\*?"\<\>\|
det är dom man inte får ha i filnamn i windows, ska ladda upp en bild o döpa nämligen.

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

## #11 — Peter S, 2005-04-21T16:04Z

Glöm inte att använda funktionen *acceptera som slutgiltigt svar* när du är nöjd med svaret.

```
function validate(obj){
    return (
	Boolean(obj.elements["email"].value.isValidEmail() || alert("Ej giltlig Epost-adress"))  && 
	Boolean(/^\d+$/.test(obj.elements["postnr"].value) || alert("Postnummret skall endast innehålla siffror")) && 
	Boolean(new personnummer(obj.elements["personnr"].value).valid || alert("Ej giltigt personnummer")) && 	
	Boolean(obj.elements["fornamn"].value != "" || alert("Inget förnamn ifyllt!")) &&
        Boolean(obj.elements["efternamn"].value != "" || alert("Inget efternamn ifyllt!")) && 
        Boolean(obj.elements["adress"].value != "" || alert("Ingen adress ifyllt!")) &&
	Boolean(obj.elements["ort"].value != "" || alert("Ingen ort ifyllt!")) && 
        Boolean((obj.elements["password"].value == obj.elements["password2"].value) || alert("Lösenorden överensstämmer ej!")) && 
        Boolean((obj.elements["username"].value.length >= 5 && obj.elements["username"].value.length <= 50) || alert("Fältet Användarnamn måste innehålla minst 5 tecken.")) &&
        Boolean((obj.elements["password"].value.length >= 5 && obj.elements["password"].value.length <= 50) || alert("Fältet lösenord måste innehålla minst 5 tecken.")) &&
	[b]Boolean(/[\/\\:\*\?"<>\|]/.test(obj.elements["[i]namn_på_fält[/i]"].value) && alert("Får ej innehålla  /\:*?"<>|")) && [/b]
        Boolean(
	    (/\d{2,4}(\s|-|\\)?(\d\s*){5,8}/.test(obj.elements["hemtele"].value) || 
	    /\d{3}(\s|-|\\)?(\d\s*){7}/.test(obj.elements["mobtele"].value)) || 
	    alert("Vänligen ange åtminstone ett giltigt telefonnummer"))
	);
}
```

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

## #12 — ConnyFox, 2005-04-27T00:22Z

jag får det faktiskt inte att funka.. kör med denna koden och den reagerar inte alls.

```
<script type="text/javascript">

function validate(obj){
return (
Boolean(/[\/\\:\*\?"<>\|]/.test(obj.elements["artikelnr"].value) && alert("ArtikelNR får ej innehålla  /\:*?"<>|"))
);
}
</script>
```

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

## #13 — Peter S, 2005-04-28T08:44Z

Jag glömde escape:a citationstecknet i alert():

```
alert("ArtikelNR får ej innehålla  /\:*?\"<>|")
```

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

## #14 — ConnyFox, 2005-05-04T01:20Z

Funkar delvis, den reagerar nu om man skrivit ett felaktigt tecken men har man inte det så skickas inte formuläret iväg :(

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

## #15 — ConnyFox, 2005-05-04T15:56Z

Ingen?

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

## #16 — Peter S, 2005-05-10T21:41Z

```
function validate(obj){
    return (
	Boolean(obj.elements["email"].value.isValidEmail() || alert("Ej giltlig Epost-adress"))  && 
	Boolean(/^\d+$/.test(obj.elements["postnr"].value) || alert("Postnummret skall endast innehålla siffror")) && 
	Boolean(new personnummer(obj.elements["personnr"].value).valid || alert("Ej giltigt personnummer")) && 	
	Boolean(obj.elements["fornamn"].value != "" || alert("Inget förnamn ifyllt!")) &&
        Boolean(obj.elements["efternamn"].value != "" || alert("Inget efternamn ifyllt!")) && 
        Boolean(obj.elements["adress"].value != "" || alert("Ingen adress ifyllt!")) &&
	Boolean(obj.elements["ort"].value != "" || alert("Ingen ort ifyllt!")) && 
        Boolean((obj.elements["password"].value == obj.elements["password2"].value) || alert("Lösenorden överensstämmer ej!")) && 
        Boolean((obj.elements["username"].value.length >= 5 && obj.elements["username"].value.length <= 50) || alert("Fältet Användarnamn måste innehålla minst 5 tecken.")) &&
        Boolean((obj.elements["password"].value.length >= 5 && obj.elements["password"].value.length <= 50) || alert("Fältet lösenord måste innehålla minst 5 tecken.")) &&
	Boolean(!/[\/\\:\*\?"<>\|]|$.{0}^/.test(obj.elements["artikelnr"].value) || alert("Artikelnumret får ej vara tomt eller innehålla  /\:*?\"<>|")) && 
        Boolean(
	    (/\d{2,4}(\s|-|\\)?(\d\s*){5,8}/.test(obj.elements["hemtele"].value) || 
	    /\d{3}(\s|-|\\)?(\d\s*){7}/.test(obj.elements["mobtele"].value)) || 
	    alert("Vänligen ange åtminstone ett giltigt telefonnummer"))
	);
}
```

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

---

Tråden på webben: https://www.webforum.nu/amne/javascript/125443-hjälp-med-formulär-kontroll
