【问题标题】:JavaScript Multi Select Box not posting all itemsJavaScript 多选框未发布所有项目
【发布时间】:2013-09-17 17:03:03
【问题描述】:

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

您可以在此处查看演示:http://jsfiddle.net/jasondavis/e6Y7J/25/

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

谁能帮帮我?

JavaScript/jQuery

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

    });   
});

【问题讨论】:

  • @HovercraftFullOfEels 是的
  • 作为一个表单,一个select只有一个值是很正常的。如果您需要将多个项目发送到服务器,请考虑使用复选框?

标签: javascript php forms multi-select


【解决方案1】:

我相信我以前遇到过这个问题。为了让 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'];

【讨论】:

  • 我不得不在几周前自己挖掘这个:)
【解决方案2】:

将多选名称更改为数组

<select name="post_status[]" multiple id="select2" class="whatever" style="height: 500px; width: 222px;"></select>

【讨论】:

    【解决方案3】:

    我认为您还必须选择 这是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;
        }
    }`
    

    这将被加载到以

    命名的数组中

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-07-14
      • 1970-01-01
      • 1970-01-01
      • 2019-09-04
      相关资源
      最近更新 更多