繁体   English   中英

只有 1 个 Jquery UI Multiselect 值通过 PHPmailer 发送

[英]Only 1 Jquery UI Multiselect value being sent through PHPmailer

我正在处理的联系表格未正确发布我的多项选择答案。 我正在使用 PHPMailer-FE 发送表单结果。 PHPMailer-FE 包含一个 php 类文件、配置脚本和 TPL 文件。

我在使用 Ryan Cramer 的 jquery.amselect.js 小部件时遇到问题,其中在电子邮件中发送的是“Array”一词,而不是逗号分隔的选定值列表。

下面是 amselect 小部件的示例: http ://www.ryancramer.com/projects/asmselect/examples/example1.html。

这是 HTML:

   <select style="width: 200px !important;" id="cards" name="cards[]" multiple="multiple" title="Choose All That Apply" >
            <option value="Visa">Visa</option>
            <option value="Mastercard">Mastercard</option>
            <option value="Amex">American Express</option>
            <option value="Discover">Discover</option>
            <option value="Diners">Diner's Club</option>
            <option value="JCB">JCB</option>
            <option value="Visa-Delta">Visa Debit/Delta</option>
            <option value="Switch-Maestro">Switch/Maestro</option>
            <option value="solo">solo</option>
            <option value="Visa-Electron">Visa Electron</option>
          </select>

感谢@aSeptik,我现在明白要解决我们可以使用内爆标签的问题。 在他的工作演示中,php 包含在 HTML 文件的顶部:

$message .= implode(', ',$_POST['cards']);

我曾尝试在我的 TPL 或类文件中使用 implode 标记,但没有成功。

任何帮助将不胜感激我正在努力解决这个问题。 非常感谢! 问候, 诺兰

通常这是由错误地命名您的输入引起的。 我以前没有使用过多选,但我建议你的输入标签需要看起来像这样:

<input type="checkbox" name="myBox[]" />
<input type="checkbox" name="myBox[]" />
<input type="checkbox" name="myBox[]" />

等等...

请注意,您需要在 name 属性中为数组表示法添加方括号。 如果您这样做,PHP 会将变量显示为数组。

在你的情况下(现在你已经添加了一个例子)你只需要让你的选择标签在最后有数组运算符:

<select class="mydrop" name="cards-accepted[]" multiple="multiple" size="5">
</select>

更新: (PHPMailer-FE + amselect 示例)

我查看了您说您正在使用的插件,现在我知道问题出在哪里了……它有问题。

它生成的输入不适合发布到服务器,因为它们都具有相同的名称。 PHP 无法区分具有相同名称的输入(除非它们包含括号符号 - [] - 那么它们被视为数组)

我在这里模拟了一个小演示:

http://jsbin.com/upuhe/edit

使用类似 firebug 的工具检查复选框,您会看到它们都具有相同的名称。

如果我在你那里我会使用 JQuery 来重命名你的插件创建的 chekboxes,如下所示:

见: http : //jsbin.com/upuhe/2/edit

$("select").multiselect()
  .each(function(){

    var selectEl = $(this);        
    var selectElName = selectEl.attr("name")

    selectEl.multiselect("widget")
      .find("input[type=checkbox]")
        .attr({ name: selectElName });
})

这假设您将选择设置为<select name='select[]' multiple='multiple'>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM