Select2 - 多个标签不起作用

Select2 - Multiple tags not working

我正在尝试使用 Select2 (https://select2.github.io) 允许用户在提交表单之前在字段中键入多个标签。在我的 Laravel PHP 应用程序中,我将获取这些标签,确定它们是否存在并将它们添加到数据库中。

我的问题是我似乎无法让 Select2 识别用户输入的多个标签。当我查询表单数据时,我只看到用户输入的最后一个标签,而不是所有标签。

我的 Select2 元素是:

<select class="tags-field" name="tags" data-tags="true" data-placeholder="TAGS" multiple="multiple">
</select>

我的 JQuery 是:

$(function() {
    $(".tags-field").select2({
        maximumSelectionLength: 3,
        tokenSeparators: [','],
    });
}

没有 Javascript 错误,它工作得很好,只是我无法检测到所有标签。

要使 PHP 将所有 selected 选项作为数组提供,请在您的 select 名称后加上一对方括号,如下所示:

<select class="tags-field" name="tags[]" data-tags="true" data-placeholder="TAGS" multiple="multiple">

如果将此表单发送到 PHP 程序,$_POST['tags'] 的值将是一个数组。请注意,表单控件名称中的方括号不是数组键的一部分。您将像这样处理这样的表格:

<?php
$tags = $_POST['tags'];
// Note that $tags will be an array.
foreach ($tags as $t) {
    echo "$t<br />";
}
?>

此处引用:http://bbrown.kennesaw.edu/papers/php2.html

  1. 使用隐藏的输入字段来发送所有值
  2. 使用onsubmit事件设置隐藏字段的值

HTML:

<form method="post" action="post.php">
    <select multiple id="e1" style="width:300px" name="_state">
        <option value="AL">Alabama</option>
        <option value="Am">Amalapuram</option>
        <option value="An">Anakapalli</option>
        <option value="Ak">Akkayapalem</option>
        <option value="WY">Wyoming</option>
    </select>
    <input type="hidden" name="state" value="" />
    <input type="submit"/>
</form>

JQ:

$("#e1").select2();

$('form').submit(function () {
    var newvalue = '';
    var value = $('select[name="_state"]').val();
    if (value) {
        newvalue = value;
    }
    $('input[name="state"]').val(newvalue);
})