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; ?>"
);

ここで説明したように

Jクエリ

$("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>

ID でない場合は 0、ID の場合は 1 として選択された名前のフィールドをマークした SQL を使用して、データベースから値を取得する必要があります。このようにして、膨大な量のコーディングを節約できます

于 2013-08-22T06:22:55.463 に答える