---
title: "Valideringsproblem i OPTION-tag"
type: "forum-thread"
url: "https://www.webforum.nu/amne/javascript/132502-valideringsproblem-i-option-tag"
topic: "JavaScript"
topic_url: "https://www.webforum.nu/amne/javascript"
author: "lillebror"
published: "2005-08-09T20:54:38.000Z"
updated: "2005-08-14T13:17:20.000Z"
replies: 34
views: 799
page: 1
pages: 2
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/132502-valideringsproblem-i-option-tag"
---

# Valideringsproblem i OPTION-tag

_Sida 1 av 2._

## #1 — lillebror, 2005-08-09T20:54Z

Hej!

Jag håller på och designar ett eget forum just nu och har kommit till ett litet problem. I forumet så finns det en snabbvalsfunktion där man kan välja vilket forum man vill besöka. Eftersom de olika forumen är indelade i olika kategorier så har jag i OPTION-taggen i formuläret loopat ut kategorin och sen de forumen som finns där under.  Denna lösning fungerar bra så när som på ett undantag. När en användare väljer något annat än de rödmarkerade alternativen i den bifogade bilden blir det av förklarliga skäl fel i koden eftersom den mottagande funktionen förväntar sig ett forumID som den då aldrig får. 

Hur kan man lösa valideringen på något smart sätt? Skulle vilja ha kategorierna kvar om det är möjligt för tydlighetens skull :)

Bilagor:

- [forum.jpg](https://www.webforum.nu/a/7268.jpg)

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

## #2 — Peter S, 2005-08-09T21:06Z

Exempel: Sätt -1 som värde i de \<option\>-element som inte skall gå att välja:

```
<option value="-1">===========</option>
```

Om "OK"-knappen är till för att skicka iväg besökaren kan du sedan göra så här:

```
<form onsubmit="return this.elements['namn_på_select'].options[this.elements['namn_på_select'].selectedIndex].value != -1">
```

Alternativt lägga ovanstående i en funktion. Typ.

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

## #3 — lillebror, 2005-08-09T21:21Z

På det hela taget så fungerar det väldigt bra Peter! :) Tack för hjälpen! Nu får jag inte problemen med felaktiga värden i SQL-frågorna och det är bra.

Dock skulle jag vilja att det inte gick att välja dessa rader med "-1" samtidigt som man klickar på OK-knappen. För användaren kommer bara till ett forum som inte finns i databasen och det känns inte riktigt bra. Kan man lösa det på något sätt?

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

## #4 — Peter S, 2005-08-09T21:26Z

Vad menar du med att användaren kommer till ett forum som inte finns? I koden ovan händer ju ingenting om ett ogiltigt val är valt och "OK" trycks ned.

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

## #5 — lillebror, 2005-08-09T21:39Z

Vad jag menar är att det finns inget som stoppar användaren från att klicka på OK-knappen när ett alternativ med value="-1" är valt! :)

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

## #6 — Peter S, 2005-08-09T21:56Z

```
function f(obj){
    var elms = obj.form.elements,
	opts = obj.options;

    elms['namn_på_OK'].disabled = (opts[elms['namn_på_select'].selectedIndex].value == -1);
}

<select onchange="f(this)"...
```

Om defaultvalet är ogiltigt kan du sätta "OK"-knappen till disabled i HTML-koden.

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

## #7 — lillebror, 2005-08-09T22:11Z

> **Peter S skrev:**
>
> ```
> <select onchange="f(this)"...
> ```

this - ska det stå så ordagrant eller är det en variabel jag ska sätta dit?

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

## #8 — Peter S, 2005-08-09T22:13Z

Det skall stå så. this refererar till \<select\>-elementet.

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

## #9 — lillebror, 2005-08-09T22:18Z

Ok.

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

## #10 — lillebror, 2005-08-09T23:46Z

Fungerar klockrent nu. Vilket klippa du är! ;)

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

## #11 — lillebror, 2005-08-12T10:26Z

Denna funktion slutade helt plötsligt att redirecta som den gjorde precis när jag var klar med den. Vet inte riktigt vad jag ställt till med som fått den att ge upp?!:OO Istället för att redirecta till ett annat forum som jag väljer med SELECT-taggen skickar den ut mig till index.php i root-katalogen när det borde vara forumdisplay?forumID=1 exempelvis.

Den mottagande kod jag använder för att hantera formuläret är:

```php
if(trim($_POST['chooseshortcut']) == 'OK') {
	$forumdata['forumID'] = trim($_POST['forumshortcutID']);
	#echo "FORUM: ".$forumdata['forumID'];
	#echo "<script Language='JavaScript'>location.href=('"../forum/forumdisplay.php?forumID=".$forumdata['forumID']."');</script>";
	header("Location: ../forumdisplay.php?forumID=".$forumdata['forumID']);
}
```

Så här ser koden ut i formuläret:

```php
<script language="JavaScript" src="../inc/function.js"></script>

<form action="../inc/include.form.forum.php" method="post">
	<?php $RSobj_forum_category = getCategory(); ?>
	<table width="100%" cellspacing="0px" cellpadding="0px">
		<tr>
			<td style="font-size: 10px; font-weight: bold; width: 38%;">Snabbval:</td>
		</tr>
		<tr>
			<td style="width: 38%;">
			<SELECT name="forumshortcutID" size="1" onchange="f(this)">
			<?php while($forumcategory = mysql_fetch_array($RSobj_forum_category)) {
				$RSobj_shortcut = showShortcutForumList($forumcategory['categoryID']); ?>
				<OPTION value="-1"><?php echo $forumcategory['title']; ?>
				<OPTION value="-1">===============================
					<?php while($shortcut = mysql_fetch_array($RSobj_shortcut)) { ?>
						<?php if($shortcut['forumID'] == $RSobj_forum['forumID']) { ?>
						<OPTION value="<?php echo $shortcut['forumID']; ?>" SELECTED>- <?php echo $shortcut['title'];
						} else { ?>
						<OPTION value="<?php echo $shortcut['forumID']; ?>">- <?php echo $shortcut['title'];
						}	
					} ?>
			<OPTION value="-1">&nbsp;
			<?php }
			?>
			</SELECT>
			</td>
			<td align="left"><input name="chooseshortcut" type="submit" value="OK" /></td>
		</tr>
	</table>
</form>
```

Javascriptet:

```
function f(obj) {
    var elms = obj.form.elements,
	opts = obj.options;

    elms['chooseshortcut'].disabled = (opts[elms['forumshortcutID'].selectedIndex].value == -1);
}
```

Någon med skarpa ögon som kan komma på vad det är för fel?!

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

## #12 — Peter S, 2005-08-12T10:45Z

Hur ser formulärkoden ut då den skickats till webbläsaren?

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

## #13 — lillebror, 2005-08-12T11:43Z

Jag vill minnas när jag kollade att variabeln och värdet var mottaget korrekt i formulärhanteringsfunktionen. Var det det du syftade på?

Finns det någon funktion som man kan göra en paus med i programkoden för att kunna se vad en echo-sats innehåller för värde? Annars flimrar det bara förbi och man hinner inte se :)

Här är länken till aktuell sida:
<http://www.flygfyren.nu/forum/forumdisplay.php?forumID=1>

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

## #14 — Peter S, 2005-08-12T12:36Z

Vad händer om du kommenterar bort

```php
header("Location: ../forumdisplay.php?forumID=".$forumdata['forumID']);
```

och skriver ut

```php
$forumdata['forumID']
```

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

## #15 — lillebror, 2005-08-12T12:52Z

Jag har försökt att remma dem med det går ju så fort så man hinner aldrig se vad variabeln innehåller för värde...

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

## #16 — Peter S, 2005-08-12T13:38Z

Jo, men om du kommenterar bort *header*\-raden navigeras du ju inte vidare. Då bör du kunna se vad variabeln innehåller.

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

## #17 — lillebror, 2005-08-12T14:32Z

Jag har ju remmat bort den men jag åker vidare till till index.php ändå  x( 

Dock upptäckte jag en annan kodsnutt jag har ibörjan av sidorna för att kontrollera att querystringarna är korrekta. De remmade jag tills vidare eftersom om forumID visar sig vara noll kan det vara här processen stannar. Koden är som följer:

```php
<?php 
	if($_GET['forumID'] == '') {
	echo "<script Language='JavaScript'>location.href=('forum.php');</script>";
	} else {
	$RSobj_thread = getForumThreads($_GET['forumID']);
	$RSobj_forum = showActiveForum($_GET['forumID']);
	}
	?>
```

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

## #18 — lillebror, 2005-08-12T14:36Z

I den bifogade filen ser man hur som helst att forumID är rätt för respektive forum i select-satsen.

Bilagor:

- [select.jpg](https://www.webforum.nu/a/7295.jpg)

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

## #19 — Peter S, 2005-08-12T14:38Z

Värdet i ditt action-attribut i \<form\>-taggen är *../inc/include.form.forum.php*. Skall det vara så?

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

## #20 — lillebror, 2005-08-12T14:45Z

> **Peter S skrev:**
>
> Värdet i ditt action-attribut i \<form\>-taggen är *../inc/include.form.forum.php*. Skall det vara så?

Ja det ska stämma. 

Blir så arg för att jag uppenbarligen lyckats förstöra det hela :e Även när jag remmat det mesta åker jag ju raka vägen till index.php...

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

---

Tråden på webben: https://www.webforum.nu/amne/javascript/132502-valideringsproblem-i-option-tag  
Nästa sida: https://www.webforum.nu/amne/javascript/132502-valideringsproblem-i-option-tag/page2.md
