在下面的代码片段中,有一个值为1 - 4的下拉菜单。当选择一个值时,相应数量的文本框通过显示隐藏的分割“出现”。
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
$(document).ready(function() {
$("#elementreg").on("change", function() {
var val = $(this).val();
$('.types').hide(); //hide all
$(`#${val}`).show(); //show by matching the selected value
});
});
</script>
<label for="How Many Chips">How Many Chips?:</label>
<select class="medium" id="elementreg" name="amount">
<option value="" selected="selected"></option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
</select>
<div class="types" id="1">
<input name="First Chip ID">
</div>
<div class="types" id="2">
<input name="First Chip ID">
<input name="Second Chip ID">
</div>
<div class="types" id="3">
<input name="First Chip ID">
<input name="Second Chip ID">
<input name="Third Chip ID">
</div>
<div class="types" id="4">
<input name="First Chip ID">
<input name="Second Chip ID">
<input name="Third Chip ID">
<input name="Fourth Chip ID">
</div>
字符串
在这种情况下,代码根据所选的值显示相应的div,而其他div保持隐藏。我想这样,当一个值是从下拉菜单中选择,所有小于或等于所选的值成为显示div。例如,如果我选择值3,则显示id=1的div、id=2的div和id=3的div。
为此,我尝试更改以下行:
$(`#${val}`).show(); //show by matching the selected value
型
变成这样:
$(`div[id <= ${val}]`).show(); //show all divs less than or equal to val
型
然而,这仅仅是破坏了该特征。我可以得到帮助或建议,我应该如何处理这个功能?
2条答案
按热度按时间e0uiprwp1#
要实现显示所有小于或等于下拉菜单中所选值的div的预期行为,需要相应地修改JavaScript代码。您可以使用一个循环遍历所有div并检查它们的ID,以确定是否应该显示或隐藏它们,而不是通过它们的ID显示/隐藏单个div。
字符串
当你从下拉列表中选择一个值时,所有ID小于或等于所选值的div都会显示出来,而其他div则保持隐藏状态。该循环从1开始到选定的值,对于每次迭代,它都显示具有相应ID的div。
s1ag04yj2#
您可以使用:lt()选择器来实现这一点。在你目前的结构中,你有所有div的公共类,即:
types
所以use可以添加一行$(
.types:lt(${val})).show()
,这将选择所有小于给定值的div并显示它们。