2

我正在创建我的页面构建器,但选择框几乎没有问题。

这就是我通过 jQuery 创建选择框的方式

    var item_opts = '<select>'
        + '<option value="red">Red</option>'
        + '<option value="green">Green</option>'
        + '<option value="blue">Blue</option>'
        + '<option value="yellow">Yellow</option>'
    + '</select>'

$('.items_options').append(item_opts);

这就是我在 PHP 中的称呼

<select>
  <?php if ( $pb_item['message_color'] == "red" ) { ?>
    <option selected="selected" value="red">Red</option>
    <option value="green">Green</option>
    <option value="blue">Blue</option>
    <option value="yellow">Yellow</option>
  <?php } elseif ( $pb_item['message_color'] == "green" ) { ?>
    <option value="red">Red</option>
    <option selected="selected" value="green">Green</option>
    <option value="blue">Blue</option>
    <option value="yellow">Yellow</option>
  <?php } elseif ( $pb_item['message_color'] == "blue" ) { ?>
    <option value="red">Red</option>
    <option value="green">Green</option>
    <option selected="selected" value="blue">Blue</option>
    <option value="yellow">Yellow</option>
  <?php } else { ?>
    <option value="red">Red</option>
    <option value="green">Green</option>
    <option value="blue">Blue</option>
    <option selected="selected" value="yellow">Yellow</option>
  <?php } ?>                      
</select> 

有没有比我更好的解决方案如何将参数“选定”添加到选定选项?

谢谢你的时间和你的建议:)

4

2 回答 2

4

是的,有更好的解决方案

<select>
    <option <? ($pb_item['message_color'] == 'red'?'selected="selected"') ?> value="red">Red</option>
    <option <? ($pb_item['message_color'] == 'green'?'selected="selected"') ?> value="green">Green</option>
    <option <? ($pb_item['message_color'] == 'blue'?'selected="selected"') ?> value="blue">Blue</option>
    <option <? ($pb_item['message_color'] == 'yellow'?'selected="selected"') ?> value="yellow">Yellow</option>                   
</select>

即使您可以通过 for 循环列出选项,例如:

$colors = array('blue', 'red', ..);
foreach($colors as $color) {
    echo "<option ".($pb_item['message_color'] == $color?'selected="selected"')."value='$color'>" . ucwords($color) . "</option>";
}
于 2013-01-06T16:10:57.273 回答
0

那些难以理解@vlcekmi3 以前选择的答案的人在这里有一些其他简单而肮脏的解释。

$colors = array(
    1 => 'blue', 
    2 => 'red', ..); //init your array with key & value

foreach($colors as $key => $color) { // a loop 

    //print <option value="red"
    echo "<option value=".$key; 

    //print selected if your selected value matched -
    //please check before you echo 'selected' add a space before that
    //you will thank me later
    if($pb_item['message_color'] == $color){ echo " selected"; } 

    // close option with print '>'
    echo '>'; 

    // print your color name
    echo $color; 

    //print </option>
    echo "</option>"; 

}

我在这里解释的可能是一种肮脏的方式,但此代码将帮助您了解如何将价值返回到您的视图中。

于 2018-03-30T12:41:48.207 回答