【问题标题】:Only 1 Jquery UI Multiselect value being sent through PHPmailer只有 1 个 Jquery UI 多选值通过 PHPmailer 发送
【发布时间】:2011-02-22 14:51:32
【问题描述】:

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

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

下面是 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,我现在明白要解决我们可以使用 implode 标签的问题。在他的工作演示中,php 包含在 HTML 文件的顶部:

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

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

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

【问题讨论】:

  • 我已经更新了一个演示,让我们试试吧。 ;)
  • 看看我的项目精简后只显示多选。Different Multiselect 有人可以告诉我为什么只发送第一个值吗?!非常感谢。

标签: php jquery user-interface phpmailer multi-select


【解决方案1】:

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

【讨论】:

  • aSeptik。感谢您的演示,尽管我实际上指的是 eric hynds 的多选小部件,名称相同,但与您提供的内容有显着差异。看看我的项目精简只是为了显示多选.. Different Multiselect 非常感谢。
  • @Nolan:我已经更新了演示和源代码测试它下载它;)
  • @aSeptik:现在使用不同的选择小部件,最后一个是错误的。新的选择工具效果很好,但是当我收到电子邮件时,列出的只是“数组”这个词。请你看看这个,让我知道你的想法:jsfiddle.net/WFgnn
  • @Nolan:我已经更新了演示和源代码!再次下载并查看代码。顺便说一句,这一次,如果你想检查答案会很好! ;) 谢谢。
  • @Nolan:再次更新。下载并查看源代码。 ;)
【解决方案2】:

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

<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>

【讨论】:

  • 我添加了上面的 HTML 代码。我应该为每个选项分配相同的名称吗?
  • 不,只需更改 标签的名称:
【解决方案3】:

我查看了您说您正在使用的插件,现在我知道问题是什么......它有问题。

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

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

http://jsbin.com/upuhe/edit

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

如果我在哪里,我会使用 JQuery 来重命名插件创建的复选框,如下所示:

见: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 });
})

这假设您将您的选择设置为 &lt;select name='select[]' multiple='multiple'&gt;

【讨论】:

    猜你喜欢
    • 2018-04-27
    • 1970-01-01
    • 1970-01-01
    • 2017-05-06
    • 2018-10-27
    • 2019-10-03
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    相关资源
    最近更新 更多