webForumDet fria alternativet

Seslectbox som array

15 svar · 305 visningar · startad av skyman

skymanMedlem sedan juli 20011 347 inlägg
#1

Kan man namnge en selectbox som:

<select name="s2[]" multiple>

och sedan kunna använda den i javascript?

Hur ska man annars kunna hämta de poster som finns i den om den bara heter "s2"?

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

Visst kan du använda s2[] som namn. Med "poster", menar du då alternativ som finns i dess "option"-element?

<script type="text/javascript">
<!--

window.onload=function(){
     var e=document.forms["f"].elements["s2"];

     alert( e.options[0].text+ " - " +e.options[0].value );
};

//-->
</script>

...

<form name="f">
<select name="s2">
     <option value="Foo">Bar</option>
     <option value="Faa">Baz</option>
</select>
</form>

:)

dectgapMedlem sedan sep. 20021 542 inlägg
#3

Jag tror att skyman undrar hur man kan använda de valda alternativen, om det finns flera stycken valda, på samma sätt som man kan skriva document.forms['aa'].elements['bb'].value. Försöker man göra på det sättet när man har flera alternativ i en select valda används bara det första värdet.

Det är ju fullt möjligt att göra en loop som kontrollerar om en option är vald, men jag tror inte att man kan lösa det på något annat sätt.

skymanMedlem sedan juli 20011 347 inlägg
#4

Jag tror att ni förstod mig rätt men jag kan ju förklara mig lite ytterligare.

För att kunna hämta de alternativ som är selectade mha php så måste den vara en array, alltså heta s2[].
Men ger jag den det namnet så hade jag problem med det i javascriptet, jag kan ju inte skriva:

var e=document.forms["f"].elements["s2[]"];
Peter SMedlem sedan dec. 20025 484 inlägg
#5

Du måste loopa igenom "select"-elementet för att ta reda på vilka alternativ som är valda. Således behöver du alltså inte använda namnet s2[] på detta element.

:)

skymanMedlem sedan juli 20011 347 inlägg
#6

Menar du loopa med javascript eller med php?
Om php, hur så?
Om javascript, varför? ;)

Peter SMedlem sedan dec. 20025 484 inlägg
#7

Red. Det blev lite överflödig kod.

Om du på den mottagande sidan skall hämta de markerade valen är det väl bara att använda dig av en vanlig "formulärfunktion"?

' ASP
Response.Write( Request.Form("s2[]") )

:)

skymanMedlem sedan juli 20011 347 inlägg
#8

Men där har du ju använt namnet s2[]...
Skrivfel?

Peter SMedlem sedan dec. 20025 484 inlägg
#9

Jag redigerade inlägget lite på grund av överflödig kod ;)

Namnet s2[] går utmärkt att använda, såväl i ASP som i JavaScript.

:)

skymanMedlem sedan juli 20011 347 inlägg
#10

Jag ändrade till s2[] i min select men hur ska jag då skriva i tex denna funktion?

function checkAll(s){
   var f=document.forms["form"].elements[s],i=f.length;
   while(i-->0){
      f[i].selected=true;
   }
};

Ska jag ändra så att s1 också blir en array?

Peter SMedlem sedan dec. 20025 484 inlägg
#11

Den där funktionen behöver du inte ändra på alls ( du skickar alltså in namnet på "select"-elementet vid anropet? ).

Hakparenteser eller ej, koden skall fungera. ;)

:)

skymanMedlem sedan juli 20011 347 inlägg
#12

Precis jag anropar den enligt :

<input type="button" onClick="checkAll('s2');" value="Alla">

Men jag får fel...

'length' är null eller inte ett objekt

och det verkar vara i funktionen add...

Peter SMedlem sedan dec. 20025 484 inlägg
#13

Vi kanske missuppfattar varandra ;) Eftersom du anropar funktionen med namnet på "select"-elementet, s2 i det här fallet, måste alltså detta element heta s2, ej s2*[]***.

:)

skymanMedlem sedan juli 20011 347 inlägg
#14

Ha!
Nu så, jag tyckte du sa att man inte kunde använda namnet s2[] när man använde javascript men jag ändrade överallt där jag anropar s2 till s2[] och då funkar det :)

Tack för hjälpen!

Peter SMedlem sedan dec. 20025 484 inlägg
#15

Då förstår vi varandra :bire

:)

skymanMedlem sedan juli 20011 347 inlägg
#16

Det är ju kanon! :birp

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