我正在尝试将此多选项作为数组提交,但是当我提交它时,没有任何内容打印到屏幕上,那么我做错了什么?
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 ....
答案 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”。