我正在尝试创建一个选择,该选项基于上一个选择中的选择显示/隐藏。我知道有很多不同的解决方案可以解决这个问题,但是我无法找到适合我的问题的解决方案,因为它们要么太复杂,要么做了一些稍微不同的事情,例如我们显示和隐藏整个选择不仅仅是选项。
我能够找到一个几乎完美的解决方案。
这个问题是,第一个选择是作为无线电类型输入,我需要将其作为一个选择。
我的HTML代码如下:
<select name="action">
<option selected>check</option>
<option>activate</option>
</select>
<select name="unit">
<option class="sensor" value="s1">Sensor 1</option>
<option class="sensor" value="s2">Sensor 2</option>
<option class="sensor" value="s3">Sensor 3</option>
<option class="sensor" value="s4">Sensor 4</option>
<option class="relay" value="r1">Relay 1</option>
<option class="relay" value="r2">Relay 2</option>
<option class="relay" value="r3">Relay 3</option>
<option class="relay" value="r4">Relay 4</option>
</select>
总而言之,当在第一个选项中选择“ check”时,我希望显示所有的类传感器,而当选择“ activate”时,我希望显示所有的类继电器。
我尝试通过上述小提琴修改js脚本,但没有成功。非常感谢您的帮助。
答案 0 :(得分:0)
您可以使用change()
事件处理程序来实现它。
var $unit = $('[name="unit"]');
$('[name="action"]').change(function() {
var cls = this.value === 'activate' ? '.relay' : '.sensor';
$unit.find('option' + cls).show();
$unit.val($unit.find('option' + cls + ':first').val());
$unit.find('option:not(' + cls + ')').hide();
}).change()
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select name="action">
<option selected>check</option>
<option>activate</option>
</select>
<select name="unit">
<option class="sensor" value="s1">Sensor 1</option>
<option class="sensor" value="s2">Sensor 2</option>
<option class="sensor" value="s3">Sensor 3</option>
<option class="sensor" value="s4">Sensor 4</option>
<option class="relay" value="r1">Relay 1</option>
<option class="relay" value="r2">Relay 2</option>
<option class="relay" value="r3">Relay 3</option>
<option class="relay" value="r4">Relay 4</option>
</select>