使用选择的Jquery从php预填充多选框

时间:2014-02-26 16:31:39

标签: php select jquery-chosen

我在下拉列表中使用此脚本 http://harvesthq.github.io/chosen/

这是我的选择选项,在以空白字段开头时效果很好。

<form>
    <select class="chosen-select" multiple="multiple" id="fm-site[]" name="fm-site[]" style="width:250px" value="<?php echo $user_site;?>">
                    <option value="Pokerstars" <?php if(in_array("Pokerstars",$site_array)){echo 'selected';}?>>Pokerstars</option>
                    <option value="Full Tilt Poker" <?php if(in_array("Full Tilt Poker",$site_array)){echo 'selected';}?>>Full Tilt Poker</option>
                    <option value="Party Poker" <?php if(in_array("Party Poker",$site_array)){echo 'selected';}?>>Party Poker</option>
                    <option value="Ipoker" <?php if(in_array("Ipoker",$site_array)){echo 'selected';}?>>Ipoker Network</option>
                    <option value="Merge" <?php if(in_array("Merge",$site_array)){echo 'selected';}?>>Merge</option>
                    <option value="Winners Poker Network" <?php if(in_array("Winners Poker Network",$site_array)){echo 'selected';}?>>Winners Poker Network</option>
                    <option value="Microgaming" <?php if(in_array("Microgaming",$site_array)){echo 'selected';}?>>Microgaming</option>
                    <option value="Ongame" <?php if(in_array("Ongame",$site_array)){echo 'selected';}?>>Ongame</option>
                    <option value="Pacific" <?php if(in_array("Pacific",$site_array)){echo 'selected';}?>>Pacific</option>
                    <option value="Boss" <?php if(in_array("Boss",$site_array)){echo 'selected';}?>>Boss Poker</option>
                    <option value="PKR" <?php if(in_array("PKR",$site_array)){echo 'selected';}?>>PKR Network</option>
                    <option value="Winning Poker" <?php if(in_array("Winning Poker",$site_array)){echo 'selected';}?>>Winning Poker Network</option>
                    <option value="Revolution/Cake" <?php if(in_array("Revolution/Cake",$site_array)){echo 'selected';}?>>Revolution/Cake</option>
                    <option value="Winimax" <?php if(in_array("Winimax",$site_array)){echo 'selected';}?>>Winimax</option>
                </select>
</form>

为了允许用户编辑它,我预先填充了数据库中的当前信息,这在所有正常输入字段上都正常工作,但是无法使其适用于多个选择。

我在数组中拥有所有值,如下所示:

$site_array = ("Pokerstars","Full Tilt Poker", "Party Poker", "Ipoker");

但是当表单被打印出来时,它只会在第一个选中,但在我的调试器中,我可以清楚地看到阵列有Full Tilt Poker等,所以我不确定为什么它不会工作。我也试过选择=“选中”,但我觉得所选脚本会覆盖这个,因为查看html所选Jquery添加所选内容的方式是这样的:

<div id="fm_site___chosen" title="" style="width: 250px;" class="chosen-container chosen-container-multi">
    <ul class="chosen-choices">
        <li class="search-choice">
            <span>Pokerstars</span>
            <a data-option-array-index="0" class="search-choice-close"></a>
        </li>
        <li class="search-choice">
             <span>Full Tilt Poker</span>
             <a data-option-array-index="1" class="search-choice-close"></a>
       </li>
       <li class="search-field">
           <input value="Select Some Options" class="" autocomplete="off" style="width: 25px;" type="text">
       </li>
   </ul>

   <div class="chosen-drop">
   <ul class="chosen-results">
       <li data-option-array-index="0" style="" class="result-selected">
           Pokerstars
       </li>
       <li data-option-array-index="1" style="" class="">
           Full Tilt Poker
       </li>
       <li data-option-array-index="2" style="" class="active-result">
           Party Poker
       </li>
       <li data-option-array-index="3" style="" class="active-result">
           Ipoker Network
       </li>
       <li data-option-array-index="4" style="" class="active-result">
           Merge
       </li>
       <li data-option-array-index="5" style="" class="active-result">
           Winners Poker Network
       </li>
       <li data-option-array-index="6" style="" class="active-result">
           Microgaming
       </li>
   </ul>
   </div>
</div>

我注意到,当以这种格式添加一个值时,它不会更新选项值中的选定值,如果您手动添加它,它有时会覆盖它。所以我想知道是否有一种方法通过选择jquery传递它应该预先选择或可能有另一个类似的jquery有人可以推荐这样做,我有红色的文档,但我没有看到任何特定的这个问题,但肯定可能吗?

1 个答案:

答案 0 :(得分:2)

事实证明这是正确的,问题是在每个值之前有一个不可见的空格。我刚刚添加了这行代码并对其进行了更正,但它可能是如此孤立,这不会帮助人们随时关闭

我将此添加到将字符串转换为数组的函数

$string_result=array_map('trim',$string_result);