2015-08-15 42 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); 
})