webForumDet fria alternativet

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

JavaScript

6 svar · 565 visningar · startad av haider

Medlem sedan jan. 2003956 inlägg
Frågan#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?

Medlem sedan dec. 20025 483 inlägg
#2

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

Medlem 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.

Medlem 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>
Medlem 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?

Medlem 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>
Medlem 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!

269 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
123 ms — deklarationer (db)
0 ms — hämta statistik (cache)
139 ms — hämta tråd, inlägg och bilagor (db)
127 ms — ändringar (db)