gpt4 book ai didi

jquery - 以编程方式将焦点设置在禁用按钮上不起作用

转载 作者:行者123 更新时间:2023-12-01 03:39:04 25 4
gpt4 key购买 nike

$(function () {
$('#save').click(function() {
$('#save').attr('disabled', 'disabled');
console.log($(document.activeElement).attr('id'));
});
$('#test').focus();
console.log($(document.activeElement).attr('id'));
});
button:focus {
outline: 1px dotted #000000;
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.0.2/jquery.min.js"></script>
<body id="body">
<button id="discard" disabled="disabled">Discard</button>
<button id="save">Save</button>
</body>

我有一个放弃更改按钮,单击时,用户会看到一个确认对话框,其中显示“您确定要放弃更改吗?”。当他们单击确定时,我们关闭对话框并希望将焦点放回到放弃更改按钮上,但我们现在已禁用它,因为没有要放弃的更改。当我检查 document.activeElement 值时,它不是禁用的按钮,而是 body 元素。但是,当用户单击“保存”按钮时,由于他们实际上将焦点设置在该元素上,因此该元素会获得焦点,因此即使在禁用该元素后,它仍然具有焦点。由于某种原因,在代码片段中,我没有看到在禁用的“保存”按钮上设置的焦点样式,即使在我的应用程序中我确实看到了它。

是否可以使用 jQuery 将焦点设置在禁用的按钮上?如果没有,为什么不呢?如果是这样,我做错了什么?

最佳答案

不,该按钮无法接收焦点,因为它被禁用。根据W3.org specification (HTML5版本)禁用的表单控件必须阻止点击事件和其他交互。

您需要做的是在某个时刻启用控件并以这种方式分配焦点。另一个建议是让按钮保持启用状态并实现某种形式的检测来确定是否响应丢弃按钮的 click 事件。

此外,(我在这里猜测)保存按钮可能显示为事件状态,因为它在被禁用之前处于事件状态。尽管浏览器需要阻止通过交互访问禁用的项目,但删除焦点(或本例中的 document.activeElement)可能不是规范的实现要求。

关于jquery - 以编程方式将焦点设置在禁用按钮上不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25939924/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com