Select2 - 多个标签不起作用

Posted

技术标签:

【中文标题】Select2 - 多个标签不起作用【英文标题】:Select2 - Multiple tags not working 【发布时间】:2015-11-08 19:11:30 【问题描述】:

我正在尝试使用 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 错误,它工作得很好,只是我无法检测到所有标签。

【问题讨论】:

【参考方案1】:

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

<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

【讨论】:

@Paul Vidal - 请修改您的答案,因为 'tags[]' 有效,但这不是一个有用的评论 @Maximillian Laumeister - 我从这个开始,我能做什么?或者我现在该如何解决这个问题?我可以删除答案吗? @PaulVidal 很抱歉造成混乱!只是您的答案很短,并且不能很好地解释自己。双方括号有什么作用,为什么会这样?它还可以帮助链接到一些进一步解释的文档。再次感谢您的回答 - 现在我在上下文中看到它,我可以理解它是正确的,但如果您将其充实一点,它仍然会对社区有所帮助。有关更多提示和详细信息,请参阅this thread。谢谢!【参考方案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);
)

【讨论】:

以上是关于Select2 - 多个标签不起作用的主要内容,如果未能解决你的问题,请参考以下文章

select2单个选择框多个不起作用[重复]

select2 多选不起作用

Select2 在引导选项卡中不起作用

在我追加新行后,select2 不起作用

maximumSelectionSize 在 Select2 中不起作用

Select2 在 Jquery-Steps 中不起作用