2013-10-18 11 views
18

Oto fragment mojego kodu: http://jsfiddle.net/natatkinson/xbWEb/select2 multi-wartość tylko wysyłając jedną wartość w POST

Javascript:

$(document).ready(function() { 
    $("#tags").select2({ 
     maximumSelectionSize: 3 
    }); 

}); 

HTML:

<form name="form1" id="form1" action="" method="GET"> 
<fieldset> 
    <legend>Shoe Info</legend> 
    <dl> <dt>Name:</dt> 

     <dd> 
      <input type="text" name="name" id="name" size="40" placeholder="Shoe name" required autofocus> 
     </dd> 
    </dl> <dt>Tags:</dt> 

    <dd> 
     <select multiple="" name="tags" id="tags" style="width:100%;"> 
      <option value="0">Select Tags</option> 
      <option value="2">racing flat</option> 
      <option value="3">track spikes</option> 
      <option value="1">trainer</option> 
     </select> 
    </dd> 
    </dl> 
</fieldset> 
<p class="submit-buttons"> 
    <input type="submit" class="button1" name="submit" id="submit" value="Add Shoes" /> 
</p> 

Wszystko która przesyła 1 wartość, a nie listę rozdzielaną przecinkami, tak jak mówi dokumentacja.

+5

próbowałeś używać "tags []" jako nazwy? – Tschitsch

+0

Jeśli zgłoszę żądanie z 3 tagami na liście, widzę jako adres URL żądania: '/? Name = abc & tags = 0 & tags = 2 & tags = 3 & submit = Dodaj + Shoes' – Nightfirecat

+0

@Tschitsch To wszystko! Powiadomię autora, aby zaktualizował ich dokumentację. Nie mogę uwierzyć, że wcześniej tego nie próbowałem. Dzięki –

Odpowiedz

59

Musisz użyć [] dla wielu wartości zawartych w nazwie formantu formularza. Prawidłowe używając przy dnie:

<select multiple="" name="tags[]" id="tags" style="width:100%;"> 
+0

Dzięki. Co jeśli chcę przeciąć ciąg przecinkami wybranej opcji? –

+0

@ankitsuthar Sprawdź nową odpowiedź, mam nadzieję, że to może ci pomóc. – Frank

1

Myślę, że nie można uzyskać ciąg danych z Select2 bezpośrednio, należy dodać ukryte wejście, i przedkłada wartości ukrytej wejściowych jako param.

<input type="hidden" name="tags" id="tags"></input> 
<select multiple="" style="width:100%;" onchange="changeSelect(event)"> 
    <option value="0">Select Tags</option> 
    <option value="1">trainer</option> 
</select> 
function changeSelect(event){ 
    var select2Value = $(event.target).val(); 
    $("tags").val(select2Value); 
}