web-dev-qa-db-ja.com

select2 multi-value POSTで1つの値のみを送信

ここに私のコードのスニペットがあります: http://jsfiddle.net/natatkinson/xbWEb/

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>

送信するのは1つの値であり、ドキュメントにあるようなカンマ区切りのリストではありません。

31
Nate Atkinson

フォームコントロールの名前に含まれる複数の値には[]を使用する必要があります。下部で使用して修正:

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

Select2から文字列データを直接取得することはできないと思います。隠し入力を追加し、隠し入力の値を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);
}
2
Frank