根据单选按钮选择将下拉菜单的值和显示名称更改为 SQL 查询结果

Posted

技术标签:

【中文标题】根据单选按钮选择将下拉菜单的值和显示名称更改为 SQL 查询结果【英文标题】:Changing a dropdown menu's value AND display name to SQL query results based on a radio button selection 【发布时间】:2011-08-26 23:14:28 【问题描述】:

重要提示:我想要的大部分内容都已完成且功能齐全——唯一不起作用的部分是获得一个与下拉列表。也就是说,我将把整个事情都摆出来,以便任何可能想要使用类似东西的人受益。


目标:当用户单击单选按钮时,页面其他位置的下拉菜单会被修改以显示不同的值,这些值来自 SQL 查询。

具体来说,在本例中,用户会选择一个学术课程(例如博士),然后下拉菜单会显示可用的开始日期。

这是一个 SQL 查询,它获取可用的开始日期,并将它们格式化为 javascript

$app_period_lookup_psyd =  mssql_query("select app_period_id,
app_period_display_online from  dbo.v_app001_application_period_for_dropdown 
where pgm_id = 1 order by available_dt");
$app_period_options_psyd = "";
while($result = mssql_fetch_array($app_period_lookup_psyd)) 
$app_period_options_psyd .= "'" . $result['app_period_display_online'] ."', ";
  

这里创建的变量是 $app_period_options_psyd,它会输出如下内容: “2011 年 9 月”、“2012 年 1 月”、

这些是单选按钮:

<input type="radio" name="pgm_id" id="macpe" value="4"
onclick="change([<?=$app_period_options_psyd?>]) " />Radio Button 1<br />

<input type="radio" name="pgm_id" id="macpd" value="5"
onclick="change(['January', 'February', 'March']) " />Radio Button 2

单击这两个按钮会生成以下下拉菜单:

<select id="app_period_id">
<option value="September 2011">September 2011</option>
<option value="January 2012">January 2012</option>
</select>

<select id="app_period_id">
<option value="January">January</option>
<option value="February">February</option>
<option value="March">March</option>
</select>

他们通过标题中的这个脚本工作:

<script type="text/javascript">
    function change(arr) 
    var el = document.getElementById('app_period_id');
    el.options.length = 0;
    for(var i = 0; i< arr.length; i++ ) 
    el.options[el.options.length] = new Option( arr[i], arr[i]);
    
    
</script>

问题:如何修改 Javascript 来为 value="" 和描述符创建不同的值,而这两个值都来自查询/查询?这是理想的输出:

<select id="app_period_id">
<option value="app_period_1">January 2012</option>
<option value="app_period_6">February 2012</option>
<option value="app period_18">March 2013</option>
</select>

“app_period_x”将在 SQL 查询中生成。

【问题讨论】:

【参考方案1】:

尝试以下更改:

$app_period_options_psyd .= "'" . $result['app_period_display_online'] ."', ";

变成

$app_period_options_psyd .= "'" . $results['app_period_id'] . "'," . $result['app_period_display_online'] ."', ";

这意味着你的数组现在看起来像

arr_[0] = ID arr_[1] = 关联名称 等等

现在将 Javascript 函数更改为

<script type="text/javascript">
    function change(arr) 
    var el = document.getElementById('app_period_id');
    el.options.length = 0;
    for(var i = 0; i< arr.length; i+=2 ) 
    el.options[el.options.length] = new Option( arr[i], arr[i+1]);
    
    
</script>

您现在在数组中循环两个步骤,并将两个元素都放入您的代码中。

【讨论】:

嗯,它似乎没有输出该数据。我尝试了一些不同的方法,并修复了一个错误( $results 应该是 $result )。我仍在测试表单是否输出了这两件事。不过,我肯定看到了回复中的逻辑。我一定会在接下来的几天内告诉你我是否能做到(或没有)。

以上是关于根据单选按钮选择将下拉菜单的值和显示名称更改为 SQL 查询结果的主要内容,如果未能解决你的问题,请参考以下文章

帮助将 DropDown 事件更改为单选按钮触发器 - javascript

根据正确选择的单选按钮显示下拉菜单

Plotly交互式绘图python:将下拉菜单更改为输入框

Shopify - 将尺寸变体从选择下拉菜单更改为按钮

如何设置动态下拉列表的选定值

C# 根据用户选择显示不同的 UI 元素