javascript - 在除 0 之外的其他下拉列表中禁用选择选项
问题描述
所以我有一个脚本,她在很大程度上做了我想做的事,但有 3 件事它没有做,我希望它做......
让它如此
选择始终可以选择具有 0 值的选项并且永远不会禁用禁用
选择加载时已选择的所有其他下拉列表中的选项,除了选择选项当然值为 0。使用此代码,您可以了解如何禁用列表中的所有选项...我不希望它这样做...如果您选择一个选项并希望再次为其他下拉菜单启用它,如果您使用下拉列表你会看到我在说什么。
非常感谢您对此的任何帮助!我一点也不擅长 JS/JQuery。
$(document).ready(function() {
$("select").on('hover', function() {
$previousValue = $(this).val();
}).change(function() {
$("select").not(this).find("option[value='" + $(this).val() + "']").attr('disabled', true);
$("select").not(this).find("option[value='" + $previousValue + "']").attr('disabled', false);
});
});
$("#confirm-form").submit(function(e) {
e.preventDefault();
$("select").find("option").removeAttr('disabled');
document.getElementById('confirm-form').submit();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="select1">
<option value="0">--Please choose--</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
<br><br>
<select id="select2">
<option value="0">--Please choose--</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
<br><br>
<select id="select3">
<option value="0">--Please choose--</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
<br><br>
<select id="select4">
<option value="0">--Please choose--</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
编辑:让这更清楚一点,抱歉混淆
解决方案
局部变量previousValue
不应该在函数之外工作,除非在两种情况下,返回或作用域,所以这就是为什么你应该捕获它以便在邻居函数中使用它change()
。
// Add your javascript here
$(document).ready(function() {
$("select").focus(function() {
previousValue = $(this).val();
console.log(previousValue);
$(this).change(
function() {
if($(this).val()!=="0"){
$("select").not(this).find("option[value='" + $(this).val() + "']").attr('disabled', true);}
$("select").not(this).find("option[value='" + previousValue + "']").attr('disabled', false);
})
});
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<select id="select1">
<option value="0">--Please choose--</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
<br><br>
<select id="select2">
<option value="0">--Please choose--</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
<br><br>
<select id="select3">
<option value="0">--Please choose--</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
<br><br>
<select id="select4">
<option value="0">--Please choose--</option>
<option value="1">1</option>
<option value="2">2</option>
<option value="3">3</option>
<option value="4">4</option>
<option value="5">5</option>
<option value="6">6</option>
<option value="7">7</option>
<option value="8">8</option>
<option value="9">9</option>
</select>
推荐阅读
- counter - 使用 LPTIM 在 STM32 上进行频率测量
- algorithm - 无限时间后在矩阵中寻找水的算法
- android - 如何从资产文件夹在webview中加载pdf
- php - 使用返回实例的方法是反模式吗?
- android - Error:(88, 46) error: cannot access TintableBackgroundView class file for androidx.core.view.TintableBackgroundView not found
- sql - S3 选择无效路径组件
- c++ - 在 main() 范围之外尝试 catch 块
- python - Jupyter 如何抓取与特定值匹配的整行
- c - 在 Windows 上使用 C 中的 WideCharToMultiByte 将 UTF-16 转换为 UTF-8
- python - 如何根据某些条件更改熊猫中的列值