Jquery 以编程方式将焦点设置为禁用按钮不工作
Jquery 以编程方式将焦点设置为禁用按钮不工作,jquery,html,button,Jquery,Html,Button,$(函数(){ $(“#保存”)。单击(函数(){ $('#save').attr('disabled','disabled'); log($(document.activeElement.attr('id')); }); $(“#测试”).focus(); log($(document.activeElement.attr('id')); }); 按钮:焦点{ 大纲:1px虚线#000000; } 丢弃 拯救 否,该按钮无法接收焦点,因为它已被禁用。根据HTML5版本,禁用的表单控件必须防止
$(函数(){
$(“#保存”)。单击(函数(){
$('#save').attr('disabled','disabled');
log($(document.activeElement.attr('id'));
});
$(“#测试”).focus();
log($(document.activeElement.attr('id'));
});代码>
按钮:焦点{
大纲:1px虚线#000000;
}
丢弃
拯救
否,该按钮无法接收焦点,因为它已被禁用。根据HTML5版本,禁用的表单控件必须防止点击事件和其他交互
您需要做的是在某个点启用控件并以这种方式分配焦点。另一个建议是保持按钮处于启用状态,并实施某种形式的检测,以确定是否响应丢弃按钮的单击事件
另外,(我在这里猜测)保存按钮可能显示为活动,因为它在被禁用之前是活动的。尽管浏览器需要阻止通过交互访问禁用的项目,但删除焦点(或本例中的document.activeElement
)可能不是规范的实现要求。很抱歉,迟到了,但您可以使用aria disabled
属性,而不是disabled
,您的元素将能够被分配焦点(即使在IE和mobile中,这个问题通常不会在Chrome或Edge中出现)
作为旁注,如果您还希望您的元素可以通过键盘选项卡进行导航,当然要确保设置tabindex=“0”
(但是,通过JavaScript以编程方式分配焦点时不需要这样做)。aria disabled将允许对禁用的元素使用focus()disabled特别意味着无法与之交互,增加焦点需要互动。我认为你最好改变工作流,而不是围绕它编码。焦点与其说是一种互动,不如说是指示用户在页面上的位置,我们的目标是将焦点放在一个合乎逻辑的位置,特别是对于屏幕阅读器用户。这与:您可以使用aria disabled
属性而不是disabled
,并且您的元素将能够被分配焦点有什么不同?这个答案已经陈述并得到了很好的解释。