仅通过PHPmailer发送的1个Jquery UI Multiselect值

问题描述 投票:2回答:3

我正在使用未正确发布多项选择答案的联系表。我正在使用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,我现在可以解决此问题,我们可以使用implode标签。在他的工作演示中,PHP包含在HTML文件的顶部:

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

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

非常感谢您的协助,我正在努力解决此问题。非常感谢!此致,诺兰

php jquery user-interface phpmailer multi-select
3个回答
1
投票

UPDATED: (PHPMailer-FE + amselect示例)


1
投票

通常,这是由于输入名称不正确引起的。我以前没有使用多选,但我建议您的输入标签必须看起来像这样:

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

等...

注意,名称属性中的数组符号必须带有方括号。如果这样做,PHP会将变量显示为数组。

在您的情况下(现在已经添加了一个示例),您只需要使select标记的末尾具有数组运算符即可:

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

0
投票

我看过您说过使用的插件,现在我看到了问题所在,它有问题。

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

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

http://jsbin.com/upuhe/edit

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

如果我在哪里,我将使用JQuery重命名您的插件创建的chekbox,如下所示:

请参阅: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'>

© www.soinside.com 2019 - 2024. All rights reserved.