【问题标题】:How to get all the values from a HTML select element in php?如何从 php 中的 HTML 选择元素中获取所有值?
【发布时间】:2012-11-11 03:42:29
【问题描述】:

我有一个带有两个选择元素(列表框)和两个按钮的 HTML 表单,用于将数据从一个列表框移动到另一个列表框(使用 JavaScript):

 <form action="page.php" method="post">
        <select name="select1" multiple="yes">
            <option value="1">Left1</option>
            <option value="2">Left2</option>
            <option value="3">Left3</option>
        </select>
        <input type="button" value="--&gt;" onclick="moveOptions(this.form.select1, this.form.select2);" /><br />
        <input type="button" value="&lt;--" onclick="moveOptions(this.form.select2, this.form.select1);" />
        <select name="select2" multiple="yes">
            <option value="4">Right1</option>
            <option value="5">Right2</option>
        </select>
        <input type="submit" name="submit" value="Submit">
</form>

当我点击提交按钮时,我想获取 所有值 存储在列表框中。

foreach ($_POST['select1'] as $value)
    {
        //save data to database
    }

这只会得到一个选定的值(如果有的话)。

我设法通过在select 的名称后面加上[] 来获得多个值(如果它们被选中)。

<select name="select1[]" multiple="yes">

但这仍然没有得到未选择的值,这样数据移动JavaScript函数也不起作用。

【问题讨论】:

  • 您是否尝试将未选择的值与选定的值一起保存在数据库中并指定哪个被选中?如果是这样,你做错了
  • 不。我要做的是:有两个选择元素,您可以将数据从一个移动到另一个,当您点击提交按钮时,我想保存选择列表框所在的值。跨度>

标签: php post html-select


【解决方案1】:

在提交表单之前,只需选择所有选项:

document.getElementsByName('submit')[0].onclick = function () {
    var s1 = document.getElementsByName('select1')[0];
    for(var i=0; i < s1.options.length; i++){
        s1.options[i].selected = true;
    }
};

【讨论】:

  • 是的,这可行。唯一的问题是我仍然无法将元素从一个选择移动到另一个,因为如果我将[] 放在选择名称之后,moveOptions 函数将不起作用。
  • 您可以使用以下命令选择带有括号的表单元素:moveOptions(this.form.elements['select1[]'], this.form.select2); 或者只需将选择切换到 getElementsByName:moveOptions(document.getElementsByName('select1[]')[0], this.form.select2);
【解决方案2】:
var select1 = document.getElementById('select1');
var values = new Array();

for(var i=0; i < select1.options.length; i++){
    values.push(select1.options[i].value);
}

要在页面之间传递数组,go here

【讨论】:

    【解决方案3】:

    我不确定您为什么要这样做,但您可以在提交表单之前调用此 Jquery 代码 并将数组值添加到隐藏输入以被发布

    $("#Submit_button").click ( function() {
            var arr = new Array;
            $("#select1 option").each ( function() {
                arr.push ( $(this).val() );
            });
            $(#hidden_input).val(arr);
        });
    

    【讨论】:

      猜你喜欢
      • 2012-09-09
      • 1970-01-01
      • 2020-11-02
      • 2014-09-07
      • 2017-07-28
      • 2011-08-06
      • 1970-01-01
      • 2018-04-28
      • 2023-02-02
      相关资源
      最近更新 更多