1

我有一个带有大表单的对话框(每个表单元素都包含在一个 DIV 中,还有标签/工具提示/等)。每当用户点击“选项卡”时,我希望它专注于下一个 div (.fm-req) 输入 (.defaultTextBox2)。这是 HTML 的示例:

<div class="fm-req">
    <label for="">Answer <a href="#" data-toggle="tooltip" data-placement="<?php echo $p;?>" title="Coming Soon..." class="tooltip_popup"><i class="icon-question-sign"></i></a></label>
    <input name="answer" class="validate[required] defaultTextBox2" maxlength="200" type="text" />
    <input type="button" name="default" value="Default">
</div>
<div class="fm-req">
    <label for="">Answer2 <a href="#" data-toggle="tooltip" data-placement="<?php echo $p;?>" title="Coming Soon..." class="tooltip_popup"><i class="icon-question-sign"></i></a></label>
    <input name="answer2" class="defaultTextBox2 percent" type="text" />
</div>

其中可能有许多不同的变体。但是,我只想关注下一个 .fm-req.defaultTextBox2。我从以下内容开始:

$(".defaultTextBox2").keydown(function(event) {
     if (event.keyCode == 9) { // 9 is tab key
         $(this).find('.fm-req').next('.defaultTextBox2').focus();
    }
}); 

但我似乎无法让它工作......

4

2 回答 2

1

不需要 javascript,只需使用 HTMLtabindex属性:

<div class="fm-req">
    <label for="">Answer <a href="#" data-toggle="tooltip" data-placement="<?php echo $p;?>" title="Coming Soon..." class="tooltip_popup"><i class="icon-question-sign"></i></a></label>
    <input tabindex="1" name="answer" class="validate[required] defaultTextBox2" maxlength="200" type="text" />
    <input type="button" name="default" value="Default">
</div>
<div class="fm-req">
    <label for="">Answer2 <a href="#" data-toggle="tooltip" data-placement="<?php echo $p;?>" title="Coming Soon..." class="tooltip_popup"><i class="icon-question-sign"></i></a></label>
    <input tabindex="2" name="answer2" class="defaultTextBox2 percent" type="text" />
</div>
于 2013-06-17T00:12:06.693 回答
0
$(".defaultTextBox2").keydown(function(event) {
    if (event.keyCode == 9) { // 9 is tab key
         event.preventDefault();
         $(this).parent().nextAll('.fm-req:has(.defaultTextBox2)').first().find('.defaultTextBox2').focus();
    }
}); 
于 2013-06-17T00:11:28.693 回答