---
title: "Använda select-värden för att skapa ny input"
type: "forum-thread"
url: "https://www.webforum.nu/amne/php/179652-använda-select-värden-för-att-skapa-ny-input"
topic: "PHP"
topic_url: "https://www.webforum.nu/amne/php"
author: "Sanji"
published: "2009-08-04T12:35:15.000Z"
updated: "2009-08-14T11:28:33.000Z"
replies: 43
views: 1803
page: 1
pages: 3
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/php/179652-använda-select-värden-för-att-skapa-ny-input"
---

# Använda select-värden för att skapa ny input

_Sida 1 av 3._

## #1 — Sanji, 2009-08-04T12:35Z

Hej! jag håller på och kodar en sida där man gör servicebokningar på motorcyklar. 

länk: <http://www.actionsports.se/service2/>

nu är det så att då man väljer övriga modeller i listan för välj modell så vill jag att ytterligare en input-ruta ska komma fram. I den rutan ska man kunna skriva in sin modell så denna sparas till databasen. jag vet hur jag skriver koden för att spara ner det man skriver in, men det jag inte vet är hur jag får rutan att skapas precis då man väljer övriga modeller.

Jag gissar på att man använder sig av en if-sats, men hur hämtar jag värdet ur select-satsen så jag kan kolla det med if-satsen? 

som sagt, jag vill att input-fönstret ska komma fram precis då man valt övriga modeller.

MVH. Marcus

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

## #2 — MickeA.com, 2009-08-04T14:01Z

Du skriver ut din "modelllista" med Ajax, så det du måste göra är att lägga till ett undantag i funktionen *getModellerList(this.value)*, som kollar att om värdet = 6 (Övriga modeller) så ska ajaxkoden inte köras. Du kan t.ex. köra ett hiddenfält som ändras till typen "text" då värdet är 6.

Den här tråden bör nog flyttas till Javascript, eftersom det inte har med PHP att göra.

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

## #3 — Sanji, 2009-08-05T08:59Z

jo det stämmer, men jag använder mig av en hel del php också

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

## #4 — MickeA.com, 2009-08-05T09:31Z

> **[Sanji skrev:](https://www.webforum.nu/p/1475904)**
>
> jo det stämmer, men jag använder mig av en hel del php också

Jo, men återigen så bör du lösa det här med Javascript, eftersom du "ropar" på funktionen och skriver ut värden via Ajax/Php.

Har du [sökt på t.ex. "Create dynamic input](http://www.google.com/search?hl=sv&client=firefox-a&rls=org.mozilla%3Asv-SE%3Aofficial&hs=LZI&q=js+create+dynamic+input+field&btnG=S%C3%B6k&lr=)?

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

## #5 — Sanji, 2009-08-05T13:51Z

Jag ska ta och söka runt lite, så återkommer jag med min lösning, eller om jag behöver mer hjälp :)

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

## #6 — Sanji, 2009-08-10T09:00Z

kan man göra så här?

 

```
V&auml;lj modell<br>
            <select name="getModeller" id="q1" onChange="valjModell(this.value);newInput();">
            <option value="ejvalt">V&auml;lj modell i listan</option>
            <?PHP                             
			$sql = "SELECT * FROM do_motorcykelmodeller WHERE mmtillverkare = " . $_POST['hidmarkeid'];
			$rs = mysql_query($sql);
			while( $r = mysql_fetch_array($rs)){
				?>
				<option value="<?PHP echo $r['doid']; ?>" <?PHP if($_POST['hidmodellid'] == $r['doid']){ echo "selected"; } ?>><?PHP echo $r['beteckning']; ?> </option>
				<?PHP
			}
            ?>
            </select>

<script language="Javascript"> 
function newInput() { 
q1 = document.getElementById("q1").value; 
 

if q1 == "annan modell"
{
document.write("<input type=\"text\" name=\"hidinput\" />");
}

} 
</script>
```

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

## #7 — Sanji, 2009-08-10T11:17Z

den extra input-rutan vill inte visa sig... någon som kan vägleda mig till vad som är fel?

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

## #8 — Sanji, 2009-08-10T12:27Z

såg vissa fel... har nu lagt till: 

```
var q1
(parentes runt if-satsens villkor)
har även bytt document.write till innerHTML och en div-tag.
```

jag har fortfarande samma problem.

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

## #9 — MickeA.com, 2009-08-10T12:29Z

jag hade nog skrivit ut det extra fältet så att det \_alltid\_ ligger där, men visa/dölja det beroende på vald item i selectlistan.

Förstår du hur jag menar?

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

## #10 — Sanji, 2009-08-10T12:32Z

du menar att växla mellan type="hidden" och type="text" ?

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

## #11 — Sanji, 2009-08-10T12:45Z

jag vet inte riktigt vad det är jag gör för fel, jag lyckas helt enkelt inte att få fram den där input-boxen. inte ens när jag lägger den helt synlig utan något speciellt, precis som vilken input-box som helst så funkar det.

Edit\* det kan nog ha att göra med var jag lägger den. jag testade att flytta ner koden en bit, och då visas den.

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

## #12 — MickeA.com, 2009-08-10T12:49Z

> **[Sanji skrev:](https://www.webforum.nu/p/1476351)**
>
> du menar att växla mellan type="hidden" och type="text" ?

Nej, det är inte så jag menar. Kan återkomma om ett par timmar med exempel, sitter på jobbet nu.

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

## #13 — Sanji, 2009-08-10T12:59Z

okej, tack :)

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

## #14 — MickeA.com, 2009-08-10T15:11Z

T.ex. såhär kan man göra:

```
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 TRANSITIONAL//EN">
<html>
<head>
<title> new document </title>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<meta name="generator" content="editplus">
<meta name="author" content="">
<meta name="keywords" content="">
<meta name="description" content="">

<script type="text/javascript">
//<!--
function showField(list){
	var sel = list.options[list.selectedIndex].value;
	if(sel == 3){
		showLayer('theField');
	}else{
		hideLayer('theField');
	}
}

function postForm(theForm){
	var f = theForm;
	if(f.mySelect.options[f.mySelect.selectedIndex].value == 3){
		alert("Du valde en annan modell: " + f.myField.value);

	}else{
		alert("Här händer något annat\n");
	}
	return false;
}

function showLayer(id) {
  var lyr = getElemRefs(id);
  if (lyr && lyr.css) lyr.css.display = "block";
}

function hideLayer(id) {
  var lyr = getElemRefs(id);
  if (lyr && lyr.css) lyr.css.display = "none";
}

function getElemRefs(id) {
	var el = (document.getElementById)? document.getElementById(id): (document.all)? document.all[id]: (document.layers)? document.layers[id]: null;
	if (el) el.css = (el.style)? el.style: el;
	return el;
}
//-->
</script>

</head>

<body>

<form method="post" onsubmit="return postForm(this);">
<div style="width: 200px; float: left;">
<p>Välj modell<br />
<select name="mySelect" onchange="showField(this);">
<option value="0">-- välj --</option>
<option value="1">Honda</option>
<option value="2">Suzuki</option>
<option value="3">Något annat</option>
</select></p>
</div>
<div id="theField" style="display: none; width: 200px; float: left;">
	<p>Ange något annat<br />
	<input type="text" name="myField" /></p>
</div>
<input type="submit" value="Spara" />
</form>
</body>
</html>
```

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

## #15 — Sanji, 2009-08-11T06:24Z

oj oj vad du har grejjat! tack för all hjälp, nu ska jag försöka göra ordning på min egna sida... återkommer snart med resultat!

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

## #16 — Sanji, 2009-08-11T07:11Z

jag kan köra så här va? 

```
onchange="blabla();showField(this);"
```

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

## #17 — MickeA.com, 2009-08-11T07:22Z

> **[Sanji skrev:](https://www.webforum.nu/p/1476421)**
>
> jag kan köra så här va?

Prova!

Men varför ska du göra så? Gör istället så att din ajaxkod körs "ifrån" funktionen
*showField();*.

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

## #18 — Sanji, 2009-08-11T07:47Z

tidigare så har alla "value"-värden på \<option\>\</option\> varit modellens id. jag kan väl fortsätta med det, if(sel == 117).

list.options, där är "list" namnet på select-satsen va?

ursäkta mig att jag ställer dumma frågor :(

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

## #19 — Sanji, 2009-08-11T07:53Z

btw, 

list.options\[list.selectedIndex\].value; 

detta hämtar det värde man angett i:\<option value=""\>\</option\> om jag har rätt.

jag har slängt ihop lite nu, men jag lyckas inte få min dolda div-tagg att bli synlig. däremot om jag gör den till "block" som default, så syns den ända tills man börjar välja saker i listan. det måste ju betyda att vad jag än gör så går if-satsen i showField alltid till else vad jag än väljer. 

jag ska försöka hitta vad jag gör för fel.

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

## #20 — MickeA.com, 2009-08-11T08:21Z

Du måste posta mer kod här om jag (eller någon annan) ska kunna hjälpa dig. Posta allt relaterat till det här problemet, dvs. htmlkod + javascript.

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

---

Tråden på webben: https://www.webforum.nu/amne/php/179652-använda-select-värden-för-att-skapa-ny-input  
Nästa sida: https://www.webforum.nu/amne/php/179652-använda-select-värden-för-att-skapa-ny-input/page2.md
