javascript - jQuery - 在选择点击时禁用第一个选项,但保持框打开?
问题描述
我有一个地址选择下拉菜单,默认为 "Select your address" 。当用户单击选择框时,我希望禁用默认选项,但要让下拉菜单保持打开状态而未选择任何内容,以便用户可以从列表中进行选择。
当前行为是自动选择第二个选项并关闭下拉菜单。
let addressClickCount;
if ($("#js-address-select option").length > 1) {
$("#js-address-select").html($("#js-address-select option")
.sort(function (a, b) {
return a.text == b.text ? 0 : a.text < b.text ? -1 : 1
}))
const blankAddress = new Option("-- SELECT YOUR ADDRESS --")
$("#js-address-select").prepend(blankAddress)
$("#js-address-select").click(function() {
if (addressClickCount === 0) {
$(blankAddress).attr('disabled','disabled')
$(blankAddress).prop("selected", false)
$("#js-address-select option[value='*']").attr('selected', false)
}
addressClickCount++
})
}
$("#js-address-select").prop("selectedIndex", 0);
}
解决方案
您真正需要做的就是禁用单击时的第一个选项。
const blankAddress = new Option("-- SELECT YOUR ADDRESS --")
$("#js-address-select").prepend(blankAddress)
$("#js-address-select option:eq(0)").prop("selected",true);
$('#js-address-select').click(function(){
$(this).find('option:eq(0)').prop('disabled',true)
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<select id="js-address-select">
<option>Address A</option>
<option>Address B</option>
<option>Address C</option>
</select>
推荐阅读
- python - 运行两个不同的 python 程序并同步它们的变量
- unicode - Unicode 中的中文、日文和韩文字符是什么
- c# - 如何在单声道中正确使用我的 .so 文件?
- android - Gradle 同步失败。找不到 com.android.tools.build:gradle:3.4.0
- python - 无效的属性名称
- node.js - 将 Response 对象转移到另一个进程
- bash - 虽然使用makefile在mac上读取行不起作用
- r - 计算R中两个日期的年差
- html - HTML选择下拉自定义箭头css
- gradle - Gradle 将发布从 gradle 4.x 迁移到 5.x?