2015-08-15 124 views
4

我想使用Select2(https://select2.github.io)允许用户在提交表单之前在一个字段中输入多个标记。在我的Laravel PHP应用程序中,我将采取这些标记,确定它们是否存在并将它们添加到数据库中。Select2 - 多个标记不工作

我的问题是,我似乎无法得到Select2来识别有多个标签被用户输入。当我询问表格数据时,我只看到用户输入的LAST标签,而不是所有的标签。

我选择二元素是:

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

和我的jQuery是:

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

没有Javascript错误和除了我无法检测所有标记它完美的罚款。

回答

6

为了使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

+0

@保罗·维达尔 - 请修改你的答案为“标签[]”工作,但它不是一个有用的评论 –

+0

@Maximillian Laumeister - 我开始用这个,有啥我可以?或者我现在怎么解决这个问题?我可以删除答案吗? –

+0

@PaulVidal对不起,混乱!这只是你的答案很短,并不能很好地解释自己。双方括号是做什么的,为什么这会起作用?它也可以帮助链接到进一步解释的一些文档。再次感谢你的回答 - 现在我从背景中看到它,我可以理解它是正确的,但如果你有一点发挥它,它仍然会对社区有所帮助。有关更多提示和详细信息,请参阅[本主题](https://meta.stackexchange.com/questions/7656/how-do-i-write-a-good-answer-to-a-question)。谢谢! –

1
  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); 
})