select2多值只在POST中发送一个值

时间:2013-10-18 20:28:21

标签: javascript jquery post

以下是我的代码片段: 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个值,而不是文档所说的逗号分隔列表。

2 个答案:

答案 0 :(得分:78)

您必须使用[]作为多个值包含的表单控件的名称。 在底部正确使用:

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

答案 1 :(得分:2)

我认为你无法直接从select2获取字符串数据,你应该添加一个隐藏的输入,并将隐藏的输入值作为参数提交。

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