使用PHP/JS在选项上设置selected

使用PHP/JS在选项上设置selected,php,javascript,html-select,Php,Javascript,Html Select,我有一个大约80个选项值的列表,我知道一定有一个简单的方法可以用javascript实现这一点,有人愿意为我抽出一点时间吗 首先也是最重要的,$sid是从url(whatever.php?sid=CR01)提取的get变量 遗憾的是,所有选项值都是硬编码的-\uuuuux-继承了这个项目 <select name="siteid" size="15"> <option value="CR01" <?php if ($sid == 'CR01') { echo '

我有一个大约80个选项值的列表,我知道一定有一个简单的方法可以用javascript实现这一点,有人愿意为我抽出一点时间吗

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

遗憾的是,所有选项值都是硬编码的-\uuuuux-继承了这个项目

<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>


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

在PHP中
$opts=array(
'CR01'=>'…',
'CR02'=>'…',
....
);

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

在PHP中
$opts=array(
'CR01'=>'…',
'CR02'=>'…',
....
);

使用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,则使用sql将名为selected的字段标记为0,如果是,则标记为1。这样,您就可以用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,则使用sql将名为selected的字段标记为0,如果是,则标记为1。这样,您就节省了大量的编码

您想用javascript做什么?您能说得更具体一点吗?可能重复您所做的操作可能是保留所选值的最佳解决方案,因为您将获得$sid值。如果列表是使用jquery/javascript填充的,那么jquery可能是一种简单的方法。首先,您如何填充选项?与主题无关,但如果您为多重选择实现jquery Selected可能是一个好主意,因为它总是一种更好的用户体验=>您想用javascript做什么?您能说得更具体一点吗?可能重复您所做的操作可能是保留所选值的最佳解决方案,因为您将获得$sid值。如果列表是使用jquery/javascript填充的,那么jquery可能是一种简单的方法。首先如何填充选项?与主题无关,但如果您为多重选择实现jquery Selected可能是一个好主意,因为总是有更好的用户体验=>不幸的是,所有选项都是用html编码的,而不是在数组中>它抓住了变量,但它在前端没有做任何事情,我是不是放错了什么?以下是源:[link]您的PHP代码在选项值
value=“'CR01'”
Remove one pair周围有一对额外的引号。或者使用以下命令:
$(“选择[name='siteid']选项[value=\'''''\']”)
此外,我的jquery代码中有一个错误,引号混淆了。现在一切都好了。它仍然不想运行,我将要面对滚动键盘,然后编写php,如果不幸的是,所有的选项都是用html编码的,而不是在数组中>它正在抓取变量,但它在前端没有做任何事,我是否放错了什么?以下是源:[link]您的PHP代码在选项值
value=“'CR01'”
Remove one pair周围有一对额外的引号。或者使用以下命令:
$(“选择[name='siteid']选项[value=\'''''\']”)
此外,我的jquery代码中有一个错误,引号混淆了。现在一切都好了。它仍然不想运行,我要面对滚动键盘,然后编写php if/then
$("select[name='siteid'] option[value='<?php echo $sid; ?>']").prop('selected', true)
<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>