javascript - 禁用选择元素中的一个选项并启用其他选项
问题描述
我有两个具有相同选项的选择元素。如果它已经在其他选择元素中被选中,我想禁用该选项。
这是我的两个选择:
<select class="form-control col-md-12" name="student1" required>
<option value="" disabled selected>Select Student</option>
<option value="0">John</option>
<option value="1">Paul</option>
</select>
<select class="form-control col-md-12" name="student2" required>
<option value="" disabled selected>Select Student</option>
<option value="0">John</option>
<option value="1">Paul</option>
</select>
这是我的javascript示例(但这不会)
$("select[name=student1]").change(function(){
if ( $(this).val() == 'John' ) {
$("select[name=student2]")
.children('option[value=' + this.val() + ']')
.attr('disabled', true);
}
});
我知道如何使用 if 语句并禁用和启用选项元素,但我将在这个上使用数据库,我想知道最简单的方法来做到这一点,或者我是否可以禁用一个并自动启用其他元素。
如果我只是禁用,那么我更改所选选项,禁用的选项将保持禁用状态,我需要启用它们以确保它们已启用。
我希望你能明白。任何帮助将不胜感激!
编辑
我将使用带有选项值的数据库,这只是示例,所以我想知道如何在不知道值是什么的情况下启用和禁用它们。
解决方案
我猜你问这个:
$(function() {
// target selects
$selects = $("select");
// listener to change value
$selects.on("change", function() {
let $sibling = $(this).siblings("select");
// setting all attrs disabled of sibling to false
$sibling.find("option").prop("disabled", false);
// setting attr disabled according the current value to true
$sibling.find(`option[value="${$(this).val()}"]`).prop("disabled", true);
});
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div>
<select class="form-control col-md-12" name="student1" required>
<option value="" disabled selected>Select Student</option>
<option value="0">John</option>
<option value="1">Paul</option>
</select>
<select class="form-control col-md-12" name="student2" required>
<option value="" disabled selected>Select Student</option>
<option value="0">John</option>
<option value="1">Paul</option>
</select>
</div>
推荐阅读
- android - 是否可以使用 Nativescript 使用 Live Caller ID 应用程序?
- arrays - 适合数组中的不同范围。范围必须满足一些标准
- encryption - 攻击 AES ECB 加密文件的最佳方法是什么?
- c++ - 为什么使用枚举时我的开关/案例默认?
- javascript - React 只允许用户数字 keydown 输入
- python - 在 python 中使用 gspread import_csv 函数时找不到文件
- python - 当其中一个线程中存在未捕获的异常时,Python 多线程程序不会退出
- assembly - 128 位到 512 位的寄存器是干什么用的?
- android - 将图像从 android 设备发送到 api
- apache-spark - 在 Spark 中丢失数据?