结束时的重要解决方案
如何在不使用tabindex=0
的情况下制表到下一个元素?
如果我以编程方式说:
$currentElement = $(document.activeElement);
$nextElement = $currentElement.next();
$nextElement.focus();
在keydown
回调函数中,为什么我仍然需要tabindex=0
?
只要我调用.focus()
,为什么浏览器不能有效地跳转到那个元素?
此处添加:
我现在意识到tabindex=0
对于浏览器标记到下一个元素至关重要。现在这是最重要的,我需要一种不同的方法:
只有在
keyup
事件中,浏览器才会实际使用tabindex=0
标记到下一个元素,并为其提供新的焦点!与实际使用
keydown
事件切换到下一个元素相反。当前,关注的项目与keydown
事件保持原样,并且将仅与keyup
一起更改为下一个tabindex=0
。
这是我挑战的关键,因为我需要使用keydown
,而不是等待keyup
。
我怎样才能做到这一点?
已解决
EG,当一个keydown处理程序看到我按下的Tab键时,我希望这个keydown处理程序创建一个keyup事件,并将这个Tab键发送到浏览器,以便我的keyup处理程序执行
$(.elem).keydown {
// create keyup Event and send this event to
// browser which will then execute my keyup handler
}
$(.elem).keyup {
// sent here
}
解决方案
$(.elem).keydown {
$(.elem).trigger("keyup");
}
您的意思是一次性密码输入吗?当您在第一个输入元素中输入内容时,焦点将跳转到下一个输入。这里我做了一个样品供您参考:
HTML:
<div class="form-class">
<input class="input-class" />
<input class="input-class" />
<input class="input-class" />
<input class="input-class" />
</div>
JS:
$('.input-class').keyup(function () {
if ($(this).val() !== "") {
//checking function logic here
$(this).next().focus();
}
})