Javascript, обработващ падащо меню и изпращащ пост заявка.

sizif

Registered
Здравейте!

В ето този код, трябва да направя корекция в името на падащите менюта. Кодът работи, но трябва да сменя стойността на name=" "
Javascript+ХТМЛ падащо меню:

<script type="text/javascript">

function move(fbox, tbox) {
var arrFbox = new Array();
var arrTbox = new Array();
var arrLookup = new Array();
var i;
for(i=0; i<tbox.options.length; i++) {
arrLookup[tbox.options.text] = tbox.options.value;
arrTbox = tbox.options.text;
}
var fLength = 0;
var tLength = arrTbox.length
for(i=0; i<fbox.options.length; i++) {
arrLookup[fbox.options.text] = fbox.options.value;
if(fbox.options.selected && fbox.options.value != "") {
arrTbox[tLength] = fbox.options.text;
tLength++;
} else {
arrFbox[fLength] = fbox.options.text;
fLength++;
}
}
arrFbox.sort();
arrTbox.sort();
fbox.length = 0;
tbox.length = 0;
var c;
for(c=0; c<arrFbox.length; c++) {
var no = new Option();
no.value = arrLookup[arrFbox[c]];
no.text = arrFbox[c];
fbox[c] = no;
}
for(c=0; c<arrTbox.length; c++) {
var no = new Option();
no.value = arrLookup[arrTbox[c]];
no.text = arrTbox[c];
tbox[c] = no;
}
}

function selectAll(box) {
for(var i=0; i<box.length; i++) {
box.selected = true;
}
}
</script>

И формата:

<form method="post" name="combo_box">
<table cellpadding="4" cellspacing="0" border="0">
<tr>
<td>
<select multiple size="10" name="list1" style="width:150" onDblClick="move(document.combo_box.list1,document.combo_box.list2)">
<option value="12">Alabama</option>
<option value="54">Alaska</option>
<option value="65">Arizona</option>
<option value="45">Arkansas</option>
<option value="2">California</option>
<option value="6">Colorado</option>
<option value="81">Connecticut</option>
</select>
</td>
<td align="center" valign="middle">
<input type="button" onClick="move(this.form.list2,this.form.list1)" value="<<" id=button1 name=button1>
<input type="button" onClick="move(this.form.list1,this.form.list2)" value=">>" id=button2 name=button2>
</td>
<td>
<select multiple size="10" name="list2" style="width:150" onDblClick="move(document.combo_box.list2,document.combo_box.list1)">
</select>
</td>
</tr>
<tr><td align="center" colspan="3"><input type="submit" name="submit_button" value="Submit" onClick="selectAll(document.combo_box.list2);"></td></tr>
</table>
</form>


Демо:
http://tntm.org/probna_3/red_2.php

Името на двете падащи менюта: list1 и list2 трябва да се променят на list1[], съответно list2[], а тази корекция да се отрази и в останалия код, където присъстват тези имена.
Не разбирам от Javascript и кода чета малко наизуст. Направих опит да сменя имента, пробвах да ги укажа в кавички и как ли не, но формата така и не проработваше. Моля помогнете ми!

Интересът ми към въпросния скрипт е по-мащабен, за причините да искам тази промяна може да видите тук:
http://web-tourist.net/forum/viewtopic.php?t=3478

Благодаря предварително!
 

sizif

Registered
Здравей!

Благодаря за препртакта, но вече съм преглеждал темата. Знам, как да обработя онова, което ми праща скрипта, даже как трябва да изглежда той, но чисто практически не мога да се справя с този. Иначе подкарах други скриптове, които се грижат да селектират повече от една възможности в такова меню...

Проблемът е, че ми трябва не просто код, който се справя с маркирането, но който позволява работа с две менюта: едно основно и второ, което съдържа резултата, който ще се изпрати. За скрипта, вижте връзката от демото, оставена в предния пост...

Ако укажа на второто падащо меню име list2[], каквото е нужно, за да се изпрати масив, скрипта не го чете. Не зная как да отразя тази промяна (или как точно да отделя името) в Javascript-а, така че той да го разпознае. :(
 

lamerko

Registered
Виж... ще се опитам най-просто да ти го кажа...

Двата селекта ги правиш така:

Код:
<select multiple size="10" name="list1[]" id="list1" style="width:150" onDblClick="move(document.combo_box.list1,document.combo_box.list2)"> 


<select multiple size="10" name="list2[]" id="list2" style="width:150" onDblClick="move(document.combo_box.list2,document.combo_box.list1)">

т.е. на атрибута name слагаш [] за масив, НО добавяш атрибут id, който е БЕЗ []. Ако принтираш СЕГА резултата, ще получиш нещо от рода:

Array ( [list2] => Array ( [0] => 54 [1] => 45 [2] => 81 ) [submit_button] => Submit )

където в масива list2 ще имаш масив със всички избрани елементи... ако съм те разбрал правилно - това ти трябва. Друго НЕ трябра да се променя :)
 

sizif

Registered
Здравей!

Благодаря ти много! Ще пробвам още сега! Ако стане, ще си решил 4-дневен проблем :)

ПП: ТРЪГНА!!!

Много ти благодаря!
 

Горе