回答
要回答这个问题(如我们在评论中已经讨论过的),不能将禁用元素作为焦点。
解决方法
对于那些正在寻找一种变通办法的人,该变通办法可以直观地表明某个元素已“禁用”,并且在仍保留可聚焦性和单击事件的同时阻止了默认功能,下面是一个简化的示例,其中提交按钮似乎被禁用并且被阻止“提交” ”,除非输入包含一些文本(如果清除输入,还将恢复“禁用”状态)。
const input = document.querySelector('input');
const button = document.querySelector('button');
input.addEventListener('input', function(event) {
let next = this.nextElementSibling;
if (this.value) {
next.classList.remove('disabled');
} else {
next.classList.add('disabled');
}
});
button.addEventListener('click', function(event) {
if (this.classList.contains('disabled')) {
event.preventDefault();
console.log('not submitted');
} else {
console.log('submitted');
}
});Run Code Online (Sandbox Code Playgroud)
button {
background-color: #fff;
color: #0d47a1;
border: 2px solid #0d47a1;
}
button.disabled {
background-color: #e0e0e0;
color: #bdbdbd;
border: 2px solid #bdbdbd;
cursor: default;
}
button.disabled:focus {
outline: none;
}Run Code Online (Sandbox Code Playgroud)
<input type="text">
<button class="disabled">Submit</button>Run Code Online (Sandbox Code Playgroud)
小智 0
如果我们有部分代码可以更好地理解您的问题,那就更好了。
为了这:
我正在我的应用程序中实现渐进式 UI 披露模式。我使用它来禁用下一个元素。因此,根据一个元素的输入,启用下一个元素。
您必须首先处理第一个元素的事件,然后在回调函数中您需要启用/禁用第二个元素,比方说:
对于启用:
$('#firstElement).on('click', function(){
$('#secondElement').removeAttr('disabled')
})
对于禁用:
$('#firstElement).on('click', function(){
$('#secondElement').attr('disabled', 'disabled')
})
希望这能有所帮助。