39

请参阅下面的表单 HTML 代码

<form method="post" action="register">      
    <div class="email">
        Email   <input type="text" tabindex="1" id="email" value="" name="email">                   </div>
    </div>
    <div class="agreement">
        <div tabindex="2" class="terms_radio">
            <div onclick="changeTerm(this);" class="radio" id="terms_radio_wrapper" style="background-position: left 0pt;">
                <input type="radio" id="terms" value="1" name="terms"><label for="terms">I have read and understood the</label>
            </div>
        </div> 
    </div>
    <div class="form_submit">
        <input type="button" tabindex="3" value="Cancel" name="cancel">
        <input type="submit" tabindex="4" value="Submit" name="submit">         
    </div>
</form>

在这里,我将协议复选框设置为完全隐藏无线电输入并将背景图像应用于包装器 div,并且包装器 div 的 onclick 将切换背景图像以及无线电输入的检查状态。

我需要在 'terms_radio' DIV 上设置 tabindex 索引,只是 div 上的 tabindex="2" 属性不起作用,

当光标位于电子邮件输入字段时,是否可以在按 TAB 时将收音机输入标签上的虚线边框向上显示?

4

4 回答 4

35

DIV 元素与HTML4中的 tabindex 不兼容)。

(但是,请注意HTML 5 规范确实允许这样做,并且无论如何它通常都可以工作)

以下元素支持 tabindex 属性:A、AREA、BUTTON、INPUT、OBJECT、SELECT 和 TEXTAREA。

基本上任何你希望能够保持专注的东西;表单元素、链接等

我认为您可能想要在这里做的是使用一点 JS(我会推荐jQuery相对轻松的东西)绑定到输入元素上的焦点事件并在父 div 上设置边框。

将其粘贴在 body 标签的底部,以从 Google CDN 获取 jQuery:

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>

然后这样的事情可能会奏效:

$(function() {
    $('div.radio input').bind({
        focus : function() {
            $(this).closest('div.radio').css('border','1px dotted #000');
        },
        blur : function() {
            $(this).closest('div.radio').css('border','none');
        }
    });
});
于 2010-06-21T21:49:49.600 回答
16

是的!它有一个规范,称为 WAI-ARIA 及其可访问性:https ://www.w3.org/TR/wai-aria-practices/#kbd_general_between

于 2012-10-20T18:06:52.040 回答
6

您可以简单地将 tabindex 值从 2 更改为 0。

<div tabindex="0" class="terms_radio">

这提供了与代码流相关的默认焦点状态。

https://www.w3.org/WAI/PF/aria-practices/#focus_tabindex

于 2016-05-19T17:39:33.807 回答
0

您可以将 tabindex="2" 设置为 radio 元素并隐藏 radio 元素(不是使用 display:none,而是使用 z-index,以便它保持 tabbable)。当您在电子邮件输入字段上按 Tab 时,收音机会获得焦点,您可以使用

input:focus+label {}

为标签设置样式

于 2014-11-20T23:08:00.323 回答