Search code examples
phpjqueryjquery-ui-multiselect

jQuery MultiSelect - output data in the order in which it was selected


I am using jQuery MultiSelect from this page http://loudev.com/ - visually it all works fine but I need to output the data in the order in which they were selected.

A workaround was posted in this article here jquery multiselect selected data order but I'm a total beginner and need some assistance to implement the solution.

Ideally I would like to output the selected items in a text field. Any help is much appreciated.

<html>
<link href="multiselect.css" media="screen" rel="stylesheet" type="text/css">

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>

<script src="jquery.multiselect.js"></script>

<script type="text/javascript">
    $(function() {
        $('#keep-order').multiSelect({ keepOrder: true });  
    });
</script>

<script>
    $(function(){
        $('#keep-order').multiSelect({
          afterSelect: function(value, text){
            var get_val = $("#multiple_value").val();
            var hidden_val = (get_val != "") ? get_val+"," : get_val;
            $("#multiple_value").val(hidden_val+""+value);
          },
          afterDeselect: function(value, text){
            var get_val = $("#multiple_value").val();
            var new_val = get_val.replace(value, "");
            $("#multiple_value").val(new_val);
          }
        });
    });     
</script>


</head>

<body>

<form method="post">
    <select multiple="multiple" id="keep-order" name="keeporder[]">
      <option value='elem_1'>elem 1</option>
      <option value='elem_2'>elem 2</option>
      <option value='elem_3'>elem 3</option>
      <option value='elem_4'>elem 4</option>
      <option value='elem_5'>elem 5</option>
      <option value='elem_6'>elem 6</option>
      <option value='elem_7'>elem 7</option>
      <option value='elem_8'>elem 8</option>
      <option value='elem_9'>elem 9</option>
      <option value='elem_10'>elem 10</option>
    </select>
    <input type="hidden" name="multiple_value" id="multiple_value" />
    <br/>
    <input type="submit" name="submit" value="Submit" />
</form>

<?php
    if(isset($_POST['submit'])){
        $hidden = $_POST['multiple_value']; //get the values from the hidden field
        $hidden_in_array = explode(",", $hidden); //convert the values into array       
        $filter_array = array_filter($hidden_in_array); //remove empty index 
        $reset_keys = array_values($filter_array); //reset the array key 
        var_dump($reset_keys); //the result     
    }
?>

</body>
</html>

Solution

  • the values are storing in the Keeporder array,so you need to get the keeporder array in PHP code

    $hidden=array();
    $hidden = $_POST['keeporder']; //get the values from the keeporder
    print_r($hidden);
    

    php fiddle example