webForumDet fria alternativet

Problem med span och select

5 svar · 427 visningar · startad av mottosson

mottossonMedlem sedan mars 200339 inlägg
#1

När man skriver koden nedan så fungerar inte select-boxen, man kan inte rulla ner den och se vilka val som finns i. Det fungerar i IE men inte i FF vilket bara gör det ännu konstigare! Någon som vet vad det är för fel eller om det finns något smartare sätt att lösa positioneringen på så att det fungerar?

<span style="position:relative;left:100px;">
	<form method="POST" name="newadfrm" action="newad.php" enctype="multipart/form-data">
		<select name="site" size="1" class="kantlinje" onChange="formHandler()">
		<option 1 value="newad.php?get=sell">Säljes</option>
		<option 2 value="newad.php?get=buy">Köpes</option>
		</select>
	</form>
</span>

http://www.streetwisemedia.se/mathias/gb/span.htm

TroxyMedlem sedan mars 20041 508 inlägg
#2

Det är både felaktigt och onödigt att använda en span-tagg i detta fall. :p

För det första så är span är ett inline-element, vilket betyder att det inte får innehålla block-element, och form är just ett sådant. Så väck med span-taggen!

För det andra så kan du definiera CSS-koden för formuläret istället. Form-taggen är ju också en sorts container som kan positioneras relativt, ingen anledning att ha ett extra element runt om.

Hoppas du förstår :)

itpastornMedlem sedan feb. 2007280 inlägg
#3

Troxy har rätt. Inline element får inte omsluta block-element. När man (vilket man bör) använder en strikt doctype skall man dock ha en (eller flera) block-element inuti form-elementet.

Det stora tekniska problemet är nog annars siffran 1 resp. 2 inuti option-taggen. Du menar väl:

<option value="newad.php?get=sell">Säljes</option>
<option value="newad.php?get=buy">Köpes</option>

Sedan skulle jag vilja be dig att inte använda formulärfunktioner för navigering på detta sätt. Utan javaskript funkar det inte. Tillgängligheten är dålig. Sökmotorer följer inte länkarna. Etc.

Petigheter:

1. Attributet "name" på formulär är nedvärderat. Använd "id".
2. "enctype" är i sammanhanget onödigt.
3. Klassnamn bör beskriva funktionalitet, inte utseende. Vad händer om du gör en ny design utan kantlinje?

.kantlinje { border: none; }

Föga intuitivt!
4. Om du kör javaskript på ett formulär, se till at det funkar det förutan, dvs. i detta fall att data kan skickas till servern som gör en redirect och att det finns en submitknapp. Den senare kan döljas med skript, så syns den bara när den behövs.

mottossonMedlem sedan mars 200339 inlägg
#4

Tack för tipsen, ska försöka sätta mig in i de ni säger, är inte så het på html :l
Det hela är egentligen en köp och sälj-sida i php där formuläret förändras beroende på om man väljer buy eller sell (java-script).

Men jag fattar inte riktigt hur man gör för att positionera formuläret så de kommer en bit in från vänster mot mitten utan att använda span?

Kom förresten på att man lika gärna kunde lösa det med tabeller... tack iaf!

TroxyMedlem sedan mars 20041 508 inlägg
#5

itpastorn skrev:

1. Attributet "name" på formulär är nedvärderat. Använd "id".

Måste bara få flika in lite ang detta.
Nedvärderat säger du. Av vem och varför? :l

icaaqMedlem sedan okt. 20004 910 inlägg
#6

Troxy skrev:

Måste bara få flika in lite ang detta.
Nedvärderat säger du. Av vem och varför? :l

Enligt http://www.w3schools.com/xhtml/xhtml_syntax.asp så har name ersatts av id i XHTML 1.0 gentemot 4.01. MEN, om man tittar i specifikationen för XHTML 1.0 STRICT finns name-attributet med som implied på formulärselement och <a>.

Man bör använda både id och name på formulärselement för att få en så bakåtkompatibel sida som möjligt. På <a> var det länge sedan jag använde name men det är inte förbjudet ;)

Andra element som tidigare haft name-attributet tex <img> har inte det i XHTML 1.0 STRICT men de finns kvar i TRANSITIONAL.

mv icaaq

Genererad på 374 ms · cache AV · v20260730165559-full.f96bc7eb