div上的标签索引

时间:2010-06-17 05:50:25

标签: html input radio-button label tabindex

请参阅下面的表格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索引,只是tab上的tabindex =“2”属性不起作用,

当光标位于电子邮件输入栏时,是否可以在按下TAB时为无线电输入的标签带上虚线边框?

5 个答案:

答案 0 :(得分:30)

DIV元素与tabindex in HTML4)不兼容。

注意 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');
        }
    });
});

答案 1 :(得分:16)

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

答案 2 :(得分:4)

您只需将tabindex值从2更改为0.

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

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

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

答案 3 :(得分:0)

你可以把tabindex =&#34; 2&#34;对于无线电元素并隐藏无线电元素(不使用display:none,但使用z-index,以便它保持tabbable)。当您在电子邮件输入字段上按Tab键时,无线电将获得焦点,您可以使用

input:focus+label {}

设置标签样式

答案 4 :(得分:-1)

<强> jSFiDDLE

$(document).ready(function() {
lastIndex = 0;
$(document).keydown(function(e) {
    if (e.keyCode == 9) var thisTab = $(":focus").attr("tabindex");
    if (e.keyCode == 9) {
        if (e.shiftKey) {
            //Focus previous input
            if (thisTab == startIndex) {
                $("#" + tabLimitInID).find('[tabindex=' + lastIndex + ']').focus();
                return false;
            }
        } else {
            if (thisTab == lastIndex) {
                $("#" + tabLimitInID).find('[tabindex=' + startIndex + ']').focus();
                return false;
            }
        }
    }
});
var setTabindexLimit = function(x, fancyID) {
        console.log(x);
        startIndex = 1;
        lastIndex = x;
        tabLimitInID = fancyID;
        $("#" + tabLimitInID).find('[tabindex=' + startIndex + ']').focus();
    }
/*Taking last tabindex=10 */
setTabindexLimit(10, "Selector_With_Where_Tab_Index_You_Want");
});

setTabindexLimit()功能两个属性 10 这是Div中的最后一个Tabindex, Selector_With_Where_Tab_Index_You_Want 是div的类或ID你想要的tabindexto重复。