webForumDet fria alternativet

Vilken event handler används på option-tags?

6 svar · 565 visningar · startad av haider

haiderMedlem sedan jan. 2003956 inlägg
#1

Jag antar att jag använder rätt term; event handler. Jag syftar på onClick mfl.

Vilken ska jag använda till en option-tag?

Jag vill egentligen skapa ett javacript som påverkar option-taggens css egenskap baserat på value-värdet. Kanske ska jag inte använda någon event handler alls, utan något annat?

Peter SMedlem sedan dec. 20025 483 inlägg
#2

När vill du ändra CSS-egenskaperna? Då ett val görs i dropdownen?

haiderMedlem sedan jan. 2003956 inlägg
#3

Hej Peter :)

Jag tänkte ändra css egenskapen vid följande test:
if (this.value.match(/xxx/)) { vet just nu ännu inte hur man gör, men det ska ske en color:#999; }

Hela den if-satsen kan ju placeras utanför i en egen process. Men då gäller ju att man hittar en event handler. Hittade den här sidan:
http://www.java2s.com/Code/HTMLCSSReference/HTML-Tag-Reference/optionEventHandlers.htm

Och jag testade några som jag ansåg verkade logiska. Mitt test var enkelt, onNånting="alert('hej')", men jag lyckades inte hitta rätt.
Har ju inte testat alla än :), men tänkte att du kanske vet vilken man bör köra med.

Peter SMedlem sedan dec. 20025 483 inlägg
#4

Okej :) Testa detta:

function f(select)
{
  var option = select.options[select.options.selectedIndex];
  if (option.value.match(/xxx/))
  {
    // gör något med option
  }
}

<select onchange="f(this)">
  <option value="1">Alt. 1
  <option value="2">Alt. 2
</select>
haiderMedlem sedan jan. 2003956 inlägg
#5

Som vanligt stockade det sig inne i hjärnan på mig, men jag tror jag hänger med.
Vad variabeln gör är att den tar reda på vilken som är markerad genom en omskrivning av select.option[ett nummer] inte sant?

Men den lösningen förutsätter att man klickar på rullmenyn för att något ska ske, eller hur? Det innebär att om första menyvalet har xxx i value, så kommer det inte att påverkas förrän vid onchange.

Ska testa på den i alla fall.

edit: man tycker att onload borde funka. Men det tycks inte gå att köra onload på en select?

Peter SMedlem sedan dec. 20025 483 inlägg
#6

Just det, först sparar vi undan en referens till den valda <option>.

f() kommer att köras när du ändrar valet i rullistan, men du även köra den direkt när t.ex. sidan laddats eller när <select>en laddats:

<body onload="f(document.forms['name_på_form'].elements['name_på_select'])">

// eller

...
</select>
<script>f(document.forms['name_på_form'].elements['name_på_select']);</script>
haiderMedlem sedan jan. 2003956 inlägg
#7

Jag har funderat lite på det och kommit fram till att bästa lösningen är att första inlägget i listan blir i stil med "gör ditt val", så följer valen efter.
Så nu ska jag bara leka lite med css och javascript så får vi se vad man får ut av det hela.

Stort tack!

133 ms totalt · 3 externa anrop · v20260731065814-full.fb544a5a
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)