Ситуация такая. Есть форма с
умным хитрым multiselect-ом который позволяет переносить варианты с левого столбца в правый и таким образом передавать дальше обработчику массив выбранных значений.
multiselect.js
function deleteOption(object,index) {
object.options[index] = null;
}
function addOption(object,text,value) {
var defaultSelected = true;
var selected = true;
var optionName = new Option(text, value, defaultSelected, selected)
object.options[object.length] = optionName;
}
function copySelected(fromObject,toObject) {
for (var i=0, l=fromObject.options.length;i<l;i++) {
if (fromObject.options[i].selected)
addOption(toObject,fromObject.options[i].text,fromObject.options[i].value);
}
for (var i=fromObject.options.length-1;i>-1;i--) {
if (fromObject.options[i].selected)
deleteOption(fromObject,i);
}
}
function copyAll(fromObject,toObject) {
for (var i=0, l=fromObject.options.length;i<l;i++) {
addOption(toObject,fromObject.options[i].text,fromObject.options[i].value);
}
for (var i=fromObject.options.length-1;i>-1;i--) {
deleteOption(fromObject,i);
}
}
function populateHidden(fromObject,toObject) {
var output = '';
for (var i=0, l=fromObject.options.length;i<l;i++) {
output += escape(fromObject.name) + '=' + escape(fromObject.options[i].value) + '&';
}
alert(output);
toObject.value = output;
}
и собсно сама вьюха где есть эта форма. Пишу на CodeIgniter-e
<html>
<head>
<title><?php echo $title; ?></title>
<meta charset="UTF-8">
<link type="text/css" rel="stylesheet" media="all" href="/css/style.css"/>
<script src="/js/multiselect.js"></script>
</head>
<body>
<div id="container">
<div id="header">
</div>
<div id="left_sidebar">
test
</div>
<div id="content">
<?php
if ($this->session->flashdata('temp_msg')) {
echo '<div id="temp_info">' . $this->session->flashdata('temp_msg') . '</div>';
}
echo form_open('',array('onSubmit'=>"populateHidden(document.myForm.select2,document.myForm.hidden1)"));
echo "<table><tr><td>";
echo "<p>";
echo form_multiselect('select1', $user_list, '', 'size=10 style="width:200px"')."</p>";
echo "</td><td>";
echo "<p>".form_button('', ' > ', 'onClick="if (document.images) copySelected(this.form.select1,this.form.select2)"')."</p>";
;
echo "<p>".form_button('', ' < ', 'onClick="if (document.images) copySelected(this.form.select2,this.form.select1)"')."</p>";
echo "<p>".form_button('',' >> ', 'onClick="if (document.images) copyAll(this.form.select1,this.form.select2)"')."</p>";
echo "<p>".form_button('',' << ', 'onClick="if (document.images) copyAll(this.form.select2,this.form.select1)"')."</p>";
echo "</td><td>";
echo form_multiselect('select2', array(), '', 'size=10 style="width:200px"');
echo "</td></tr></table>";
echo form_submit('', "Send");
echo form_close();
?>
</div>
Вот суть в том что $_POST['select2'] который попадает в обработчик является не массивом значений которые мне нужны, а лишь строкой в которую занесен лишь первый выбранный option. Соответственно для того чтоб был возвращен массив мне нужно назвать select2 select2[]. Но в этом случа javascript наотрез отказывается переносить по кнопкам с лева направо значения... Вот хотел бы узнать как решить данную прискорбную ситуацию...