2015-08-15 2 views
4

Я пытаюсь использовать Select2 (https://select2.github.io), чтобы позволить пользователю вводить несколько тегов в поле перед отправкой формы. В моем приложении Laravel PHP я возьму те теги, определите, существуют ли они и добавьте их в базу данных.Select2 - Несколько тегов не работают

Моя проблема заключается в том, что я не могу заставить Select2 распознавать, что пользователь вводит несколько тегов. Когда я допрашиваю данные формы, я вижу только тег LAST, введенный пользователем, а не ВСЕ теги.

Мой Выбор2 элемент:

<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

@Paul Vidal - Пожалуйста, пересмотреть свой ответ как 'теги []' работал, но это не полезно комментарий –

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