我正在尝试在Jquery UI Multiselect Widget中使用图像。一切似乎工作得很好,除非我尝试将选择颜色列表传递给php以通过电子邮件发送。在电子邮件中我只收到了最后选择的项目,所以如果我选择黑色和蓝色,我只会在电子邮件中收到蓝色。
我正在使用这个html:
<!DOCTYPE html>
<html lang="en">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>jQuery MultiSelect Plugin Tests</title>
<link rel="stylesheet" type="text/css" href="multiselect/jquery.multiselect.css" >
<link rel="stylesheet" type="text/css" href="multiselect/style.css" >
<link rel="stylesheet" type="text/css" href="multiselect/jquery-ui.css" >
<script type="text/javascript" src="multiselect/jquery.js"></script>
<script type="text/javascript" src="multiselect/jquery-ui.min.js"></script>
<script type="text/javascript" src="multiselect/jquery.multiselect.js"></script>
</head>
<script type="text/javascript">
$(function(){
// custom text
$("#colors").multiselect({
header: false,
height: 250,
noneSelectedText: 'Select Color Group(s)',
});
});
</script>
<body>
<h1>Form Submission Test</h1>
<p>Testing to ensure the correct values are actually passed when the form is submitted.</p>
<form action="colors_mail_handler.php" method="post" enctype="multipart/form-data" style="margin-top:20px">
<select id="colors" name="colors" multiple="multiple" size="8">
<option value="beige" image="menu_stuff/material_beige.png">   Beige</option>
<option value="black" image="menu_stuff/material_black.png">   Black</option>
<option value="blue" image="menu_stuff/material_blue.png">   Blue</option>
<option value="brown" image="menu_stuff/material_brown.png">   Brown</option>
<option value="burgundy" image="menu_stuff/material_burgundy.png">  Burgundy</option>
</select>
<div><input type="submit" value="Submit" /></div>
</form>
<!--
<script type="text/javascript">
$("form").bind("submit", function(){
alert( $('#colors').serialize() );
return false;
});
</script>
-->
</body>
</html>
并使用此PHP发送电子邮件:
<?php
$to = "memail@gmail.com";
$subject = "Colors submission";
$message = $_POST['colors'];
mail($to,$subject,$message);
?>
我已经在HTML中运行了注释掉的代码,该代码为我提供了一个带有“颜色”的警报。变量,这是正确的。
任何人都有我可以尝试的想法或事情吗?
答案 0 :(得分:1)
您需要在<select>
名称中添加括号:
<select id="colors" name="colors[]" multiple="multiple" size="8">
这样,所选值将由php在$_POST['colors']
中的数组中发送和检索。
然后,您可以内爆数组以获取要通过电子邮件发送的字符串:
$message = 'No color selected';
if (isset($_POST['colors'])) {
$message = implode(', ', $_POST['colors']);
}