我正在尝试制作一个允许我的用户为其主题添加标签的插件。我的想法是使用像这样的多个属性的常规选择:
<form id="multiselect" method="post" action="foo.php">
<select id="tags" name="tag_id[]" multiple="multiple">
<option value="1">Tag 1</option>
<option value="2">Tag 2</option>
<option value="3">Tag 3</option>
<option value="4">Tag 4</option>
<option value="5">Tag 5</option>
</select>
<input type="submit" name="submit" value="Send" class="button">
</form>
&#13;
然而,我希望能够按照用户选择它们的顺序添加它们......例如如果有人会选择2,4,1我希望能够以完全相同的顺序添加这些标签。问题是数组(print_r($_POST["tag_id"]);
)按选项排序,而不是按用户选择的顺序排序。什么是最好的方法,以便我可以使用PHP中的订单?
感谢
答案 0 :(得分:1)
您需要跟踪用户点击的顺序,并将其与选择数据一起提交。显示标签时,请按先前捕获的字段排序。
答案 1 :(得分:1)
你不能直接这样做。您需要使用javascript执行此操作。保持一个堆栈,每当#tags
更改的值发生时,请执行以下操作:
这里我用jquery
显示了实现
$(document).ready(function(e) {
var tags = [];
$("#tags").change(function(e) {
var val = $("#tags").val();
var i;
for(i = 0; i < tags.length; i++) {
if(val.indexOf(tags[i]) == -1){
tags.splice(i,1);
i--;
}
}
for(i in val){
if(tags.indexOf(val[i]) == -1){
tags.push(val[i]);
}
}
alert(tags);
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form id="multiselect" method="post" action="foo.php">
<select id="tags" name="tag_id[]" multiple="multiple">
<option value="1">Tag 1</option>
<option value="2">Tag 2</option>
<option value="3">Tag 3</option>
<option value="4">Tag 4</option>
<option value="5">Tag 5</option>
</select>
<input type="submit" name="submit" value="Send" class="button">
</form>
然后您可以将此数组放在任何隐藏类型input
中,以便在服务器端使用。