提交此多选项有什么问题?

时间:2011-10-17 14:09:56

标签: php html forms

我正在尝试将此多选项作为数组提交,但是当我提交它时,没有任何内容打印到屏幕上,那么我做错了什么?

HTML

  <div class="container">  
    <select name="itemsToChoose" id="left" size="8" multiple="multiple">      
      <option value="1">item1</option>  
      <option value="2">item2</option>  
      <option value="3">item3</option>  
      <option value="4">item4</option>  
      <option value="5">item5</option>  
    </select>  
  </div>  

  <div class="low container">  
    <input name="left2right" value="add" type="button">  
    <input name="right2left" value="remove" type="button">  
  </div>  


  <form  Method ="POST" action="multiSelectRead.php">


  <div class="container">  
    <select name="itemsToAdd" id="right" size="8" multiple="multiple">  
    </select>  
  </div>  

  <input type="submit" style="width: 75px; border: 1px solid gray" value="Submit">
<br />

         </form>

JS代码:

$(function() {
    $(".low input[type='button']").click(function() {
        var arr = $(this).attr("name").split("2");
        var from = arr[0];
        var to = arr[1];
        $("#" + from + " option:selected").each(function() {
            $("#" + to).append($(this).clone());
            $(this).remove();
        });
    });
})



$('form').submit(function() {
    $('#seldist option').each(function(i) {
        $(this).attr("selected", "selected");
    });
});

multiSelectRead.php

<?php

print_r($_POST["itemsToAdd"]);



?>

用户可以添加值然后点击提交。但我尝试了它,但它不会将数组中的itemstoAdd值传递给php ....

以下是摘录:http://jsfiddle.net/an4gA/

3 个答案:

答案 0 :(得分:0)

您必须将表单元素的名称改为包含[]的数组:

<select name="itemsToChoose[]" id="left" size="8" multiple="multiple">
<select name="itemsToAdd[]" id="right" size="8" multiple="multiple"> 

其次,在您的表单中,您使用itemsToChoose,其中包含选项,而在您的PHP中,您调用的itemsToAdd没有可供选择的选项。

<强>更新

我在表单的method属性中看到了一个错误的空格。这导致空$_POST,但可能不是空的$_REQUEST$_GET

<form  Method ="POST" action="multiSelectRead.php">
             ^^^^

<form  method="POST" action="multiSelectRead.php">

答案 1 :(得分:0)

您的选择中没有任何内容。根本没有价值。

您的代码段中的select中的所有值均位于itemsToChoose,且该值不在您的<form>标记内。

执行print_r($_POST);查看提交的内容,然后重试。

同时尝试移动<form>开始标记以包含itemsToChoose

编辑:正如Michael指出的那样,你应该通过将[]添加到选择名称

来使其成为一个数组

答案 2 :(得分:0)

在你发布的jsFiddle中,用于选择选项的jQuery代码为:

$('#seldist option').each(function(i) {
    $(this).attr("selected", "selected");
});

事实是,你的选择框的ID是“正确的”。

将上方的#seldist更改为#right,或将您的选择框的ID更改为“seldist”。