【问题标题】:Select2 - Multiple tags not workingSelect2 - 多个标签不起作用
【发布时间】: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 错误,它工作得很好,只是我无法检测到所有标签。

【问题讨论】:

    标签: javascript php jquery laravel jquery-select2


    【解决方案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】:
    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);
    })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-20
      • 1970-01-01
      • 2013-07-12
      • 1970-01-01
      • 1970-01-01
      • 2021-07-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多