0

我有一个大约 80 个选项值的列表,我知道必须有一种简单的方法可以使用 javascript 来完成此操作,有人愿意花点时间吗?

首先,$sid 是从 url 中提取的 get 变量(whatever.php?sid=CR01)

可悲的是,所有选项值都是硬编码的-__-继承了这个项目

<select name="siteid"  size="15">
    <option value="CR01" <?php if ($sid == 'CR01') { echo 'selected="selected"';} ?>>
         CR01 (Crooked Run @ Lake Frederick Dam)
    </option>
<option value="'CR02'">CR02 (Nineveh Spring)</option>
<option value="'CR03'">CR03 (Crooked Run @ Rt 639 bridge)</option>
<option value="'CR04'">CR04 (McKay Spring)</option>
<option value="'CR05'">CR05 (Crooked Run @ Cabin Ct)</option>
(etc etc etc)
</select>
4

2 回答 2

4

哦,是的,当然有一个简单的方法。

在 PHP 中

$opts = array(
    'CR01' => '...',
    'CR02' => '...',
    ....
);

<select name="siteid">
<?php foreach( $opts as $var => $opt ): ?>
  <option 
    value="<?php echo $var ?>"
    <?php if( $var == $sid ): ?>selected="selected"<?php endif; ?> >
   <?php echo $opt ?>
  </option>
<?php endforeach; ?>
</select>

在 JS

香草

function setOption(selectElement, value) {
  var options = selectElement.options;
  for (var i = 0, optionsLength = options.length; i < optionsLength; i++) {
    if (options[i].value == value) {
        selectElement.selectedIndex = i;
        return true;
    }
  }
  return false;
}
setOption(
  document.querySelector('select[name='siteid']'),
  "<?php echo $sid; ?>"
);

如此处所述

查询

$("select[name='siteid'] option[value='<?php echo $sid; ?>']").prop('selected', true)
于 2013-08-22T06:21:42.923 回答
0

使用 Javascript?为什么是Js?我会使用 PHP,以避免重复代码。假设您将所有选项都存储在数组中,我会这样做:

<select name="siteid"  size="15">
    <?php foreach ( $options as $option ) : ?>
    <option value="'.$option['value'].'"<?php echo ($option['selected'] == 1) ? ' selected="selected"':''?>> <?php echo $option['label'] ?> </option>
    <?php endoreach; ?>
</select>

您应该从数据库中获取值,使用 sql 标记一个名为 selected 的字段,如果不是 id,则为 0,如果是,则为 1。这样,您可以节省大量的编码

于 2013-08-22T06:22:55.463 回答