---
title: "Formulärkontroll"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/114613-formulärkontroll"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "Prime_66"
published: "2004-10-28T14:09:26.000Z"
updated: "2004-10-30T09:51:09.000Z"
replies: 6
views: 344
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/114613-formulärkontroll"
---

# Formulärkontroll

## #1 — Prime_66, 2004-10-28T14:09Z

Jag har checkboxar som alla heter song_id\[\] i ett form. När jag klickar på submit vill jag kolla igenom om dessa är ikryssade eller ej. Om det inte är det ska formen inte skickas nämligen. Några förslag?

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

## #2 — Peter S, 2004-10-28T14:53Z

Denna kod placeras lämpligen i en funktion som körs i onsubmit-attributet:

```
...
var elms = document.forms["[b]namn_på_formulär[/b]"].elements["song_id[]"],
    iLen = elms.length;
while (iLen-->0)
    if (!elms[iLen].checked)
        return false;
...
```

 :)

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

## #3 — Prime_66, 2004-10-28T22:40Z

Tackar :) Det funkar bra förutom att det inte funkar när det bara är EN checkbox kvar. Alltså om det är till exempel 4 checkboxar fungerar funktionen bra. Men när det är enbart en checkbox händer ingeting. Kolla här:

Jag kallar funktionen från ett tryck på en hyperlänk:
\<html\>
\<a href="javascript:document.form1.action.value='delete'; Empty();"\>Ta bort checkbox\>
\</html\>

Den går in funktionen:
\<script\>
function Empty(){
 	var elms = document.forms\["form1"\].elements\["song_id\[\]"\];
    iLen = elms.length;
	while (iLen--\>0){
		if (!elms\[iLen\].checked){
		//Gör inget
		}
		else{
		//Submitta form
                                document.form1.submit();
		}
		
	}
}
\</script\>

Jag fattar inte riktigt vad while (iLen--\>0) betyder rikigt heller? Brukar man inte använda "==", "\>" eller "\<" ?

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

## #4 — Peter S, 2004-10-29T09:06Z

Introduktionen av måsvingarna utelämnades medvetet i mitt exempel. Funktionen Empty()s definition bör därför vara:

```
function Empty(){
var elms = document.forms["form1"].elements["song_id[]"],
    iLen = elms.length;

while (iLen-->0)
    if (!elms[iLen].checked)
        return false;

// Alla checkboxar ikryssade. Skicka formulär.
document.forms["form1"].submit();
}
```

*iLen--\>0*\-delen är bara ett sätt att dekrementera iLen till dess att villkoret stämmer, d.v.s.: så länge iLen-- är större än 0, gör...

 :)

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

## #5 — Prime_66, 2004-10-29T20:32Z

Problemet kvarstår. När det endast är EN checkbox kvar submittas formet trots att det inte borde det. Den går alltså inte in i if-satsen, vilket är väldigt skumt. Någon aning varför? Har det något att göra med att song_id\[\] är en array kanske..

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

## #6 — Prime_66, 2004-10-29T23:20Z

Jag löste det genom att lägga in ett hidden-field med namnet song_id\[\]. Så att det alltid finns mer än ett objekt som heter song_id\[\]. DÅ verkar det funka. Inte bästa lösningen..men men.

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

## #7 — Peter S, 2004-10-30T09:51Z

Sorry, jag insåg ej att iLen kunde anta värdet undefined. Här är en lösning:

```
function Empty(){
var elms = document.forms["form1"].elements["song_id[]"],
    iLen = elms.length;

if (typeof iLen == "undefined" && !elms.checked) return false;

while (iLen-->0)
    if (!elms[iLen].checked)
        return false;

// Alla checkboxar ikryssade. Skicka formulär.
document.forms["form1"].submit();
}
```

 :)

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

---

Tråden på webben: https://www.webforum.nu/amne/javascript/114613-formulärkontroll
