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"?
15 svar · 305 visningar · startad av skyman
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"?
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>
:)
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.
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[]"];
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.
:)
Menar du loopa med javascript eller med php?
Om php, hur så?
Om javascript, varför? ;)
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[]") )
:)
Men där har du ju använt namnet s2[]...
Skrivfel?
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.
:)
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?
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. ;)
:)
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...
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*[]***.
:)
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!
Det är ju kanon! :birp