onclick (!?) для SELECT multiple

Loki-Di

Новичок
onclick (!?) для SELECT multiple

Приветствую.
В связи с тем что в этом деле я дилетант, прошу помочь или намекнуть.

Имеется поле:

<select multiple name="key[]">
<option value="value1">1</option>
<option value="value2">2</option>
<option value="value3">3</option>
<option value="value4">4</option>
</select>

При выборе, например, "1" должно сразу открыться новое окно с GET запросом "?key[]=1".

Зажмём контроль и выберем наряду с этим второе значение, например "3", должно сразу открыться окно с запросом "?key[]=1&key[]=3";

Если не жаль времени, памагите =)

-~{}~ 23.10.05 17:51:

Немного потестировался, вот что выходит:

Пишем поле
<script language="JavaScript">
function getNames()
{
var selected;
selected=document.form.form1.value;
document.getElementById("text").innerHTML=""+selected+"";
}
</script>

<form name="form">
<select multiple name="key[]" id="form1" onChange="getNames();">
<option value="value1">1</option>
<option value="value2">2</option>
<option value="value3">3</option>
<option value="value4">4</option>
</select>
</form>


<span id="text"></span>

Что получается, при выборе "2" выводит value2, зажимаем контроль и выбираем вместе с этим "1" - вывод value1.

Но всё работает если последний выбранный элемент находиться ВЫШЕ первого выделенного!!!

Конкретно нужно получить так, чтобы всегда отображался последний выбранный элемент при множественном выборе.

ЗЫ: на эту тему скриптов вообще заходит кто?.. помоему я один...
 

SelenIT

IT-лунатик :)
Код:
function getNames()
{
var keys='';
for (i=0; i<document.form.form1.options.length; i++) {
    if(document.form.form1.options[i].selected) {
        keys += (keys ? '&' : '?') + 'key[]=' + document.form.form1.options[i].value;
    }
}
document.getElementById("text").innerHTML = keys;
}
 

Loki-Di

Новичок
<select multiple onchange="getSelected();" id="select">
<option value="Option 1">zzzzz
<option value="Option 2">zzzz
<option value="Option 3">zz
<option value="Option 4">zzzz
</select>
<div id="text"></div>
<script>
sel = document.getElementById("select");
keys = new Array();
for(i=0;i<sel.options.length;i++)
keys[keys.length] = (sel.options.selected)?true:false;
function getSelected(){
var newKeys = new Array();
for(i=0;i<sel.options.length;i++){
newKeys[newKeys.length] = (sel.options.selected)?true:false;
if(newKeys!=keys)
lastSelected = i;
}
keys = newKeys;
document.getElementById('text').innerText = "Последняя измененная опция имеет значение "+sel.options[lastSelected].value;
}
</script>
 
Сверху