Kom ihåg mig?

onclick på selectlist

Ämnesverktyg Visningsalternativ
Oläst 2008-09-24, 12:04 #1
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
Tjena,
Håller på med ett formulär och har stött på ett problem.

Här är koden, förklaring kommer nedan.

Kod:
function strpos( haystack, needle, offset){
  var i = haystack.indexOf( needle, offset ); // returns -1
  return i >= 0 ? i : false;
}

function addGroupToUser(name){
 if(strpos(document.getElementById("user").innerHTML, name, 0) === false){
document.getElementById("user").innerHTML = document.getElementById("user").innerHTML + name + ', ';
	} else {
 delGroupToUser(name);
	}
}

<select name="selectGroup" id="selectGroup">
        <option value="Kalle" onclick="addUser('Kalle')">Kalle</option>
        <option value="Ola" onclick="addUser('Ola')">Ola</option>
        <option value="Sara" onclick="addUser('Sara')">Sara</option>
</select>
Vad som sker är att man klickar på ett namn i droplistan och namnet läggs in i en lista. Detta fungerar perfekt i Firefox.. men ej i Explorer. Varför?
Jag har kommit så långt att jag förstår att det hela rör sig om att onclick inte fungerar på samma vis i de olika webbläsarna. Verkan inte som explorer registrerar att man valt något.

Hur löser jag detta? Tack!
grinditwp är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-09-24, 12:44 #2
Syke Syke är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 297
Syke Syke är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 297
http://bytes.com/forum/thread589737.html

Använd onchange istället eftersom det inte finns något onclick event i IE.

Ex:
<select name="selectGroup" onchange="addGroupToUser(this.value);" id="selectGroup">
<option value="Kalle">Kalle</option>
<option value="Ola">Ola</option>
<option value="Sara">Sara</option>
</select>
Syke är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-09-24, 13:08 #3
hnn hnn är inte uppkopplad
Banned
 
Reg.datum: Mar 2004
Inlägg: 2 587
hnn hnn är inte uppkopplad
Banned
 
Reg.datum: Mar 2004
Inlägg: 2 587
Citat:
Originally posted by Syke@Sep 24 2008, 12:44
http://bytes.com/forum/thread589737.html
Använd onchange istället eftersom det inte finns något onclick event i IE.
Ex:
<select name="selectGroup" onchange="addGroupToUser(this.value);" id="selectGroup">
<option value="Kalle">Kalle</option>
<option value="Ola">Ola</option>
<option value="Sara">Sara</option>
</select>


Korrigering:

<select name="selectGroup" onchange="addGroupToUser(this.options[this.selectedIndex].value);" id="selectGroup">
hnn är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-09-24, 14:19 #4
Syke Syke är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 297
Syke Syke är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 297
tack
Syke är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-09-24, 15:39 #5
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
grinditwp grinditwp är inte uppkopplad
Flitig postare
 
Reg.datum: Mar 2008
Inlägg: 320
Citat:
Ursprungligen postat av Syke
http://bytes.com/forum/thread589737.html
Använd onchange istället eftersom det inte finns något onclick event i IE.
Ex:
select name=selectGroup onchange=addGroupToUser(this.value); id=selectGroup
option value=KalleKalle/option
option value=OlaOla/option
option value=SaraSara/option
/select
Citat:
Originally posted by -hnn@Sep 24 2008, 13:08
Citat:
Ursprungligen postat av Syke
http://bytes.com/forum/thread589737.html
Använd onchange istället eftersom det inte finns något onclick event i IE.
Ex:
select name=selectGroup onchange=addGroupToUser(this.value); id=selectGroup
option value=KalleKalle/option
option value=OlaOla/option
option value=SaraSara/option
/select
Korrigering:
select name=selectGroup onchange=addGroupToUser(this.options[this.selectedIndex].value); id=selectGroup
Tack båda ni!

Båda era lösningar fungerar dock, kan ni utveckla varför och vad olikheterna är?
Alltså både this.options[this.selectedIndex].value och this.value fungerar i både Firefox och Explorer 6+.

Har ni några bra länk tips där jag kan utforska område själv, känner mig lite rostig på just denna biten. Ha det!
grinditwp är inte uppkopplad   Svara med citatSvara med citat
Oläst 2008-09-24, 16:41 #6
Syke Syke är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 297
Syke Syke är inte uppkopplad
Medlem
 
Reg.datum: Mar 2008
Inlägg: 297
Hej,
här finns definitionen enligt w3c:
http://www.w3.org/TR/DOM-Level-2-HTM...ml#ID-94282980

Där det står bl.a:
"value of type DOMString
The current form control value (i.e. the value of the currently selected option), if multiple options are selected this is the value of the first selected option."

Därför fungerar this.value för select-elementet. Det innehåller helt enkelt det nuvarande valda värdet i select:en.

Det hnn skriver är ett annat sätt att komma åt samma värde:
this.options innehåller en lista med alla options, och this.selectedIndex innehåller numret på den option som är vald. Således blir this.options[this.selectedIndex].value värdet på den valda option:en.

Båda är lika ok enligt w3c, frågan är om den ena är mer implementerad än den andra, det är sånt man får testa i olika webbläsare helt enkelt.

ps. Ett av de bättre sätten att fördjupa sig är helt klart Firefox + Firebug, w3c-specifikationen eller annan referens och sen bara testa, testa och testa.
Syke är inte uppkopplad   Svara med citatSvara med citat
Svara


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 
Ämnesverktyg
Visningsalternativ

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 17:43.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017