我有一个表单并且在Tab键上按下字段应该是焦点旋转 清楚。请参阅以下代码。
$('#e').keyup(function (e) {
if (e.which === 9)
$("#a").focus();
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type = "text" id = "a" name="a" /><br/>
<input type = "text" id = "b" name="b" /><br/>
<input type = "text" id = "c" name="c" /><br/>
<input type = "text" id = "d" name="d" /><br/>
<input type = "text" id = "e" name="e" /><br/>
当它转到字段'e'时,它直接转到'a'即可。但它不等待'e'没有必要有机会进入'e'字段
请指导我。
答案 0 :(得分:3)
问题是在之后发生了keyup
事件,它已将焦点移到下一个字段。
您需要在keydown
事件上执行此操作:
$('#e').keydown(function (e) {
if (e.which === 9){
$("#a").focus();
e.preventDefault();
}
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input type = "text" id = "a" name="a" /><br/>
<input type = "text" id = "b" name="b" /><br/>
<input type = "text" id = "c" name="c" /><br/>
<input type = "text" id = "d" name="d" /><br/>
<input type = "text" id = "e" name="e" /><br/>
&#13;
需要e.preventDefault()
或简称return false;
的原因是keydown
仍会从当前关注控件(即{{1}转到#a
)
如果您希望它更通用,请忘记ID并使用#b
和:last
选择器
e.g。
:first
答案 1 :(得分:2)
你需要的是一个keydown事件,而不是keyup。 tab键的默认行为是在keydown上移动下一个目标。
$('#e').keydown(function (e) {
if (e.which === 9) {
e.preventDefault();
$("#a").focus();
}
});
请参阅更新后的fiddle。
答案 2 :(得分:1)
您必须更改已倾听的事件,不要忘记停止事件传播
$('#e').keydown(function (e) {
if (e.which === 9) {
$("#a").focus();
e.preventDefault();
}
});
答案 3 :(得分:0)
我将答案编辑成正确答案。 查看此更新的fiddle
//prevent default behavior
$(document).on('keydown', 'input[type="text"]', function(e) {
if(e.keyCode === 9) {
e.preventDefault();
}
});
$(document).on('keyup', 'input[type="text"]', function(e) {
if(e.keyCode === 9) {
if($(this).index()+1 < $(this).siblings().length) {
$(this).siblings().eq($(this).index()+1).focus();
return false;
}
else {
$(this).siblings().first().focus();
}
}
});
答案 4 :(得分:0)
这是另一个可以处理无限期输入的方法。此外,这并不依赖于ID。
var $inputs = $('input');
var $lastInput = $inputs.last();
$inputs.keydown(function (e) {
if ( e.which === 9 && $lastInput.is(":focus") ) {
$inputs.first().focus();
e.preventDefault();
}
});
&#13;
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type = "text" /><br/>
<input type = "text" /><br/>
<input type = "text" /><br/>
<input type = "text" /><br/>
<input type = "text" /><br/>
<input type = "text" /><br/>
<input type = "text" /><br/>
<input type = "text" /><br/>
<input type = "text" /><br/>
<input type = "text" /><br/>
&#13;