douchao1879 2017-04-03 16:44
浏览 463
已采纳

Select2设置多个选定选项

I've been searching for solutions to solve the follow problem, however previous questions I've read have yielded no successful results.

I have a JSON encoded array stored in a database, for example ["2",2,5]. I need to cut the first value off the array and use the remaining items to select specific options in a multiple select from select2. My current solution show below displays the option corresponding to first value of the remaining array, but not the second. Any suggestions?

$("#sltETags").select2({ placeholder: 'Select a Primary Tag', minimumResultsForSearch: 8}).select2('val', [<?php $LstTags = json_decode($row["Tags"]); for($i = 1; $i < count($LstTags); $i++){ if($i != count($LstTags)-1){ echo '"'.$LstTags[$i].'",'; } else { echo '"'.$LstTags[$i].'"'; }} ?>]);

Outcome

$("#sltETags").select2({ placeholder: 'Select a Primary Tag', minimumResultsForSearch: 8}).select2('val', ["2","5"]);

HTML Code

<select class="form-control select2" multiple="multiple" data-placeholder="Select Secondary Tags" id="sltETags">
    <?php
    $LstTags = $TagManager->displayTags(0);
    for($i = 0; $i < count($LstTags); $i++){
        ?><option value="<?php echo $LstTags[$i][0]; ?>"><?php echo $LstTags[$i][1]; ?></option><?php
    } ?>
</select>
  • 写回答

1条回答 默认 最新

  • doufu5747 2017-04-09 15:47
    关注

    It seems the issue was the Javascript function to change the selected items. My fix is below:

                <?php
    
                    $LstTags = json_decode($row["Tags"]);
    
                    for($i = 1; $i < count($LstTags); $i++){
                        $LstTags[$i] = "$LstTags[$i]";
                    }
    
                    $LstTags = json_encode($LstTags);
    
                ?>
                $("#sltETags").select2({ placeholder: 'Select a Primary Tag', minimumResultsForSearch: 8});
                $("#sltETags").val(<?php echo $LstTags; ?>).select2();
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?