javascript - 如何根据文本框中的值填充下拉列表?
问题描述
我希望根据我在文本框字段中的值显示下拉列表选项。例如,如果文本框中的值为“J”,则下拉列表应显示“J”的值。它不是从另一个下拉列表中填充下拉列表,而是根据文本框中的值填充下拉列表。
这就是当文本框字段中的值为 J 时的意思,那么它应该显示基于“J”的插槽:
这是我制作的代码,但我想更改它不需要从第一个下拉列表中选择选项。
function dynamicdropdown(listindex)
{
switch (listindex)
{
case "I" :
document.getElementById("reserveSlot").options[0]=new Option("Select Slot","");
document.getElementById("reserveSlot").options[1]=new Option("11:20AM","11:20AM");
break;
case "J" :
document.getElementById("reserveSlot").options[0]=new Option("Select Slot","");
document.getElementById("reserveSlot").options[1]=new Option("1:00PM","1:00PM");
break;
}
return true;
}
<tr>
<td class="category_div" id="category_div" width=25%>STUDENT BLOCK:</td>
<td>
<select id="studBlock" name="studBlock" onchange="javascript:dynamicdropdown(this.options[this.selectedIndex].value);" required>
<option value="">Select Block</option>
<option value="I">I</option>
<option value="J">J</option>
</select>
</td>
</tr>
我该如何解决这个问题?
解决方案
我不确定我是否理解你的问题。这是一个在加载文档时调用新函数 pageLoaded 的示例。在那里您可以初始化字段。
您的代码中有很多内容需要更改。例如,document.getElementById("reserveSlot")
多次调用是不好的......
另一件事:使用标签作为选项并不好。最好在外面加上label,让options成为options。<optgroup>
如果有意义,您可以将选项分组。
我还将插槽的定义移到了带有数组的对象中。与您使用的方法相比,这使得添加更多插槽变得更容易,并且输入更少。
const slotOptions =
{
"I" : [ "11:20AM" ],
"J" : [ "1:00AM" ],
}
function dynamicdropdown(value)
{
var options= slotOptions[ value ];
var slot = document.getElementById("reserveSlot");
slot.length = 0; // remove all options
options.forEach(
function (time) {
slot.appendChild( new Option(time, time) );
}
)
}
function pageLoaded()
{
dynamicdropdown(document.getElementById("studBlock").value);
}
// Calling pageLoaded when the DOM is loaded
window.addEventListener('DOMContentLoaded', pageLoaded);
<table>
<tr>
<td class="category_div" id="category_div" width=25%>STUDENT BLOCK:</td>
<td>
<small>Select Block</small><br>
<select id="studBlock" name="studBlock" onchange="dynamicdropdown(this.value);" required>
<option value="I">I</option>
<option value="J">J</option>
</select>
</td>
<td>
<small>Select Slot</small><br>
<select id="reserveSlot" name="reserveSlot" required>
</select>
</td>
</tr>
</table>
推荐阅读
- java - 如何使用按位运算检查置换的十六进制整数是否与另一个匹配(性能优化)
- python - Keras 使用固定种子获得不同的结果
- html - 纯 CSS 手风琴的可访问性问题
- php - 如何在 PHP 中使用 while 循环来使用 array_merge()?
- json - 在 JSON Builder 中从整数中去除引号
- flutter - Flutter 多列显示,就像 css3 列一样
- android-studio - 如何在 AndroidStudio 中修改资源?
- guice-persist - Guice Persist 具有多个持久性单元
- python - RPI 伺服帽子 python3 库抛出错误:“板”没有属性“SCL”
- ruby-on-rails - 如何在 Ruby on Rails 上使用 will_paginate gem 实现 Ajax