Multiple select elemeinek elérése
Sziasztok!
Egy multiple select lista elemeit szeretném elérni Javascripttel. Az egész célja az lenne, hogy két lista közt tudjam ide-oda pakolászni a dolgokat, aztán az egyik lista elemeit szerver oldalon feldolgozhassam.
Adott mondjuk ez a form:És hozzá ez a javascript:Ha a multiselectek neve slct, illetve slct2 lenne - mint ahogy azt a javascriptben használtam -, tökéletesen menne a dolog, de akkor ugye szerver oldalon csak a sorban utolsó kiválasztott elemet kapnám meg.
Hogyan érem el a 'slct[]' lista elemeit?
document.urlap.slct nem jó,
document.urlap.slct[] nem jó,
document.urlap.slct[0] nem jó,
document.slct['e1'] nem jó.
Egyébként nem ragaszkodom feltétlenül a fenti kódhoz, ha van jobb megoldás... ,)
A segítséget előre is köszönöm!
■ Egy multiple select lista elemeit szeretném elérni Javascripttel. Az egész célja az lenne, hogy két lista közt tudjam ide-oda pakolászni a dolgokat, aztán az egyik lista elemeit szerver oldalon feldolgozhassam.
Adott mondjuk ez a form:
<form method="post" name="urlap">
<select name="slct[]" size="10" multiple>
<option value="e1">Elem 1</option>
<option value="e2">Elem 2</option>
<option value="e3">Elem 3</option>
</select>
<select name="slct2[]" size="10" multiple>
</select><br />
<input type="button" value=" berak >> " onclick="atrak('be');" />
<input type="button" value=" << kivesz " onclick="atrak('ki');" />
<input type="submit" value=" mehet " />
</form>
function atrak(mod)
{
if ( mod == 'be' ) {
forras = document.urlap.slct;
cel = document.urlap.slct2;
} else {
forras = document.urlap.slct2;
cel = document.urlap.slct;
}
forras_hossz = forras.length;
for (i=0; i<forras_hossz; i++) {
if ( forras.options[i].selected == true ) {
cel_hossz = cel.length;
cel.options[cel_hossz] = new Option(forras.options[i].text);
}
}
for (i=(forras_hossz-1); i>=0; i--) {
if ( forras.options[i].selected == true ) {
forras.options[i] = null;
}
}
}
Hogyan érem el a 'slct[]' lista elemeit?
document.urlap.slct nem jó,
document.urlap.slct[] nem jó,
document.urlap.slct[0] nem jó,
document.slct['e1'] nem jó.
Egyébként nem ragaszkodom feltétlenül a fenti kódhoz, ha van jobb megoldás... ,)
A segítséget előre is köszönöm!
submit buttony-ra
<input type="submit" value="Mehet" name="submit" onclick="selectAllElement();">
javascript-ben meg lenne egy ilyenem
function selectAllElement(){
for (var i=0; i < document.urlap.select1.length; i++) document.urlap.select1.options[i].selected=true;
}
szerver oldalon a $_POST['select1'] -be ott lesz a select1 összes eleme, nem próbáltam, csak sztem :)
Használj ID-t
...
<select name="slct2[]" size="10" id="slct2" multiple>
alakot használnád? Akkor elérheted őket így:
slct2Obj = document.getElementById("slct2");
Kösz!
Tronic, a megoldás remek, és most már működik is minden.
A végleges változatot még annyival egészítettem ki, hogy az átrakott elem értéke is átkerül:
kicsit még gondolkoztam,
print_r(explode(',',$_GET['selectArray']));
?>
<html>
<head>
<script type="text/javascript">
function finalize()
{
tempArray=new Array();
for (var i=0;i<document.test.testSelect.length;i++)tempArray[i]=document.test.testSelect.options[i].value
document.getElementById('selectArray').value=tempArray;
}
</script>
</head>
<body>
<form name='test' >
<select name="testSelect" size=10 multiple="multiple">
<option value="e1">test1</option>
<option value="e2">test2</option>
<option value="e3">test3</option>
<option value="e4">test4</option>
</select>
<input type="hidden" id="selectArray" name="selectArray" />
<input type="submit" value="mehet" onclick="finalize();" />
</form>
</body>
</html>
a hidden változóba hogyan kell js-en keresztül tömböt tölteni, értsd hogy a php-ban már ne kelljen explode-olni ?