我有一个div.boxinput
列表(每个都有两个输入字段)。如果按下向下箭头键,我需要更改其他输入的焦点。
我可以截取密钥,但我无法将焦点移动到另一个输入。
$(document).keydown(function(e) {
e.preventDefault();
if (e.keyCode == 40) {
alert("down");
// find where is the focus ?
var hasFocus = $('input').is(':focus');
alert(hasFocus);
// change focus ( problem here, don't change focus )
if ( $(hasFocus).parent().hasClass("reso") ) {
$(hasFocus).parent().prev().find("input").focus();
}else{
$(hasFocus).parent().next().find("input").focus();
}
}
if (e.keyCode == 37) { alert("left"); }
if (e.keyCode == 38) { alert("top"); }
if (e.keyCode == 39) { alert("right"); }
});
我在这里创建了我的实验:jsfiddle.net/andreaferri/mt95g9cu/7/
如何选择具有焦点的项目?
答案 0 :(得分:0)
好的,所以这里是改变焦点的工作脚本。
var focused;
$('input').focus(function() {
focused = $(this);
});
$(document).keydown(function(e) {
e.preventDefault();
if (e.keyCode == 40) {
if ( $(focused).parent().hasClass("reso") ) {
$(focused).parent().prev().find("input").focus();
} else {
$(focused).parent().next().find("input").focus();
}
}
});
如你所见,你必须得到这样的对象(这是我设置焦点输入的部分吗?):
var focused;
$('input').focus(function() {
focused = $(this);
});
正如我所承诺的,你在这里工作jsFiddle。同样,这只是一个如何完成它的建议,它并不是所有键都完整的。它仅适用于按键,它只能在您关注的任何行中从左到右或从右到左切换。尝试一下,让我知道你是否还有其他问题,但这就是你的问题的答案,如何在按下键时改变对元素的关注。我想你了解它现在如何运作以及如何改变焦点。