1

我在旧的 JSFIddle 上找到了一个很好的演示,用于使用 JavaScript 将项目从一个多选框移动到另一个

你可以在这里看到演示:http: //jsfiddle.net/jasondavis/e6Y7J/25/

问题是,视觉部分可以正常工作,但是当我将它放在带有 PHP 的服务器上时,它只是POST添加到新选择框中的最后一项。POST因此,无论选择框中存在多少项目,它都只会发布一个项目,而不是发布一个项目数组。

谁能帮我?

JavaScript/jQuery

$(document).ready(function() {
    $('select').change(function() {
        var $this = $(this);
        $this.siblings('select').append($this.find('option:selected')); // append selected option to sibling

    });   
});
4

3 回答 3

3

我相信我以前遇到过这个问题。为了使 PHP $_POST 数组正确填充,您需要在名称末尾添加一个带有 [] 的名称字段。然后 PHP 会将结果解释为所有值的数组,而不仅仅是最后选择的值。

例子:

<select name="demo_multi[]" multiple="multiple">
<option value="1">Option 1</option>
<option value="2">Option 2</option>
<option value="3">Option 3</option>
<option value="4">Option 4</option>
</select>

当您回忆 $_POST 数组中的项目时,请去掉方括号。

$values = $_POST['demo_multi'];
于 2013-09-17T17:20:56.043 回答
0

将多选名称更改为数组

<select name="post_status[]" multiple id="select2" class="whatever" style="height: 500px; width: 222px;"></select>
于 2013-09-17T17:17:00.493 回答
0

我认为您还必须选择 This is pre jquery 中的所有项目,但它可以工作。

`<form onsubmit="selectAll();"> ....</form>
function selectAll()
{
    for(j=0; j<document.formdata.elements.length; j++)
    {
    // if a multiple select box then select all items in the box so they are sent with the form
    var currObj = document.formdata.elements[j];
        if (currObj.tagName == 'SELECT' && currObj.multiple == true)
            for (i=0; i<currObj.length; i++)
                currObj.options[i].selected = true;
    }
}`

然后将其加载到在

于 2013-10-04T19:10:07.683 回答