---
title: "Radio button + array"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/161530-radio-button-array"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "UrMe"
published: "2007-06-15T07:46:09.000Z"
updated: "2007-06-15T12:51:41.000Z"
replies: 9
views: 554
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/161530-radio-button-array"
---

# Radio button + array

## #1 — UrMe, 2007-06-15T07:46Z

Hur kollar jag om någon av dessa är i kryssad på smidigaste sättet:

```
<input type="radio" name="a1[city]" value="5">
<input type="radio" name="a1[city]" value="4">
<input type="radio" name="a1[city]" value="3">
<input type="radio" name="a1[city]" value="2">
<input type="radio" name="a1[city]" value="1">
<input type="radio" name="a1[city]" value="0">

<input type="radio" name="a1[country]" value="5">
<input type="radio" name="a1[country]" value="4">
<input type="radio" name="a1[country]" value="3">
<input type="radio" name="a1[country]" value="2">
<input type="radio" name="a1[country]" value="1">
<input type="radio" name="a1[country]" value="0">
```

Har försökt med något sånt här, men det funkar inge vidare:

```
function checkform()
{
		if(eval("document.f1003.a1[city][0].checked") == false)
		{
			alert("Du valde inget!");
			return false;
		}		

		document.f1003.submit();
}
```

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

## #2 — @nders, 2007-06-15T07:51Z

exempel: <http://www.webforum.nu/showthread.php?p=477053#post477053>

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

## #3 — UrMe, 2007-06-15T08:02Z

Men jag verkar inte ens komma åt värdet..

t.ex om jag kör så här:

alert(document.f1003.a1);

Så får jag undefined, om jag lägger till:

alert(document.f1003.a1\[city\]); eller alert(document.f1003.a1\[city\]\[0\]);

så händer inget utan den går bara vidare.

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

## #4 — @nders, 2007-06-15T08:10Z

Det är inte så konstigt att inte *alert(document.f1003.a1);* fungerar, dina radioknappar heter *a1\[city\]*. Varför heter de det förresten? 

Det är inte så konstigt att inte *alert(document.f1003.a1\[city\]);* fungerar, man måste alltid ange vilken av radioknapparna man vill ha.

Det är inte så konstigt att inte *document.f1003.a1\[city\]\[0\]);* fungerar, eftersom du inte kan göra alert() på ett radioknappsobjekt. Välj en egenskap, till exempel *checked* eller *value*. 

Kanske kan funka:

```
alert(document.f1003.['a1[city]'][0].checked);
```

Det känns också som att det är att be om problem att ha hakparenteser i namnet på sina checkboxar, eftersom hakparenteser används rätt mycket i javascript... Om jag var du skulle jag byta bort dem, så skulle allt bli så mycket sötare och mindre kladdigt.

Gick det inte att använda Jojoxx exempel till något?

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

## #5 — colione, 2007-06-15T08:27Z

Iom att du har med brackets så tolkas a1 som en array, vilket är fel.
Då får lösa det nåt sånt här istället:

```
<form name="f1003">
<input type="radio" name="a1[city]" value="5">
<input type="radio" name="a1[city]" value="4">
<input type="radio" name="a1[city]" value="3">
<input type="radio" name="a1[city]" value="2">
<input type="radio" name="a1[city]" value="1">
<input type="radio" name="a1[city]" value="0">

<input type="radio" name="a1[country]" value="5">
<input type="radio" name="a1[country]" value="4">
<input type="radio" name="a1[country]" value="3">
<input type="radio" name="a1[country]" value="2">
<input type="radio" name="a1[country]" value="1">
<input type="radio" name="a1[country]" value="0">
</form>
<input type="button" onclick="alert(foo('a1[city]'))">
<script>
function foo(n) {
f=document.f1003
es=f.elements
for (i=0;i<es.length;i++) {
e=es[i]
if (!e.getAttribute("name")==n)
	continue;

if (e.checked) 
	return e.value;
}
return false;
}
</script>
```

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

## #6 — UrMe, 2007-06-15T08:46Z

```
alert(document.f1003.['a1[city]'][0].checked);
```

fungerade inte heller :(

Varför jag använder a1\[city\], a1\[country\] etc (har 16st sådana där totalt) är för att jag kan lätt plocka upp arrayen i php på nästa sida. Istället för att ha 16 olika variabler. Kanske finns nåt annat sätt att göra det på?

Ska testa Coliones funktion.

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

## #7 — UrMe, 2007-06-15T12:05Z

Har kommit så här långt, fungerar ju bra om man bara har en variabel:

```
	function checkform() {
		foo('a1[city]');
		return false;
	}

	function foo(n) {
		f=document.f1003;
		es=f.elements;
		rchecked = 0;
		for (i=0;i<es.length;i++) {
			e=es[i];
			alert(e.getAttribute("name"));
			if (!e.getAttribute("name")==n) {
				continue;
			}

			if (e.checked) {
				rchecked = 1;
			}
		}

		if(rchecked == 1) {
			document.f1003.submit();
		} else {
			alert("Du har glömt att välja ett alternativ");
			return false;
		}
	}
```

Frågan är hur jag på bästa sätt kan köra igenom alla variabler och kolla om de inte är checked innan jag skriver ut felmeddelandet/skickar formuläret.

Borde kanske läsa lite mer javascript känns det som :)

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

## #8 — colione, 2007-06-15T12:41Z

```
<form name="f1003" onsubmit="return checkform()">
<input type="radio" name="a1[city]" value="5">
<input type="radio" name="a1[city]" value="4">
<input type="radio" name="a1[city]" value="3">
<input type="radio" name="a1[city]" value="2">
<input type="radio" name="a1[city]" value="1">
<input type="radio" name="a1[city]" value="0">

<input type="radio" name="a1[country]" value="5">
<input type="radio" name="a1[country]" value="4">
<input type="radio" name="a1[country]" value="3">
<input type="radio" name="a1[country]" value="2">
<input type="radio" name="a1[country]" value="1">
<input type="radio" name="a1[country]" value="0">
<input type="submit">
</form>
<script>
function checkform(){
if(foo('a1[city]') && foo('a1[country]'))
	return true;
		
alert("Du har glömt att välja ett alternativ");
return false;
}

function foo(n) {
f=document.f1003
es=f.elements
for (i=0;i<es.length;i++) {
e=es[i]
if (e.getAttribute("name")==n && e.checked)
return e.value; //Om du inte är intresserad av själva värdet, utan bara om en är ifylld, kan du egentligena använda: return true;
}
return false;
}
</script>
```

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

## #9 — UrMe, 2007-06-15T12:47Z

Tackar och bockar! Det där fungerar precis som jag vill.

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

## #10 — nitro2k01, 2007-06-15T12:51Z

Nu hann colione före, men jag postar min lösning ändå, eftersom den angriper problemet på ett lite annorlunda sätt.

```
<script type="text/javascript">
function checkem(){
	var basename='a1';
	var groupnames=['city', 'country'];

	for (var i=0; i<groupnames.length; i++){
		var isChecked=false,
			gels=document.getElementsByName(basename+'['+groupnames[i]+']');

		for (var j=0; j<gels.length; j++)
			if(gels[j].checked){
				isChecked=true;
				break;
			}

		if (!isChecked)
			return false;

	}
	return true;
}

</script>

<form>
<input type="radio" name="a1[city]" value="5">
<input type="radio" name="a1[city]" value="4">
<input type="radio" name="a1[city]" value="3">
<input type="radio" name="a1[city]" value="2">
<input type="radio" name="a1[city]" value="1">
<input type="radio" name="a1[city]" value="0">
<br />

<input type="radio" name="a1[country]" value="5">
<input type="radio" name="a1[country]" value="4">
<input type="radio" name="a1[country]" value="3">
<input type="radio" name="a1[country]" value="2">
<input type="radio" name="a1[country]" value="1">
<input type="radio" name="a1[country]" value="0">

<input type="button" onclick="alert(checkem());">
</form>
```

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

---

Tråden på webben: https://www.webforum.nu/amne/javascript/161530-radio-button-array
