因此,通过执行以下操作,应该禁用该按钮,但实际上可以使用制表符访问该按钮:
Dim rb As RadioButton = grpGrams.Controls.OfType(Of RadioButton).FirstOrDefault(Function(r) r.Checked = True)?.Name
Dim strRBName As String = Nothing
If rb IsNot Nothing Then strRBName = rb.Name
为防止这种情况发生,我必须向要禁用的所有元素添加Dim strRBName As String = grpGrams.Controls.OfType(Of RadioButton).FirstOrDefault(Function(r) r.Checked = True)?.Name
吗?我以为使用禁用的类可以解决此问题,但似乎没有。
还有其他方法吗?
答案 0 :(得分:1)
是的,这很烦人但也很合乎逻辑。制表和聚焦是不同的浏览器任务。 CSS(除了少数例外)主要与视觉行为有关。添加tabindex="-1"
会变得令人毛骨悚然,因为一旦不再禁用该按钮,您很可能还希望通过制表来使该按钮集中。
如果按钮正在获得焦点并且它是disabled
,我建议一个将焦点移到上一个或下一个元素的处理程序:
$('button').focus(function(e) {
if ($(this).hasClass('disabled')) {
e.currentTarget.nextElementSibling.focus()
//or e.currentTarget.previousElementSibling.focus()
}
})