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 - 多个标签不起作用的主要内容,如果未能解决你的问题,请参考以下文章