我正在尝试在用户使用Jquery按Enter键时关注下一个输入类型。但是,由于某种原因,它没有检测到按键。
输入类型位于名为mGrid的css类中。
static int i = 1;
__attribute__((noinline)) void f (int *i)
{
*i *=2;
}
int g (void)
{
f (&i);
return i;
}
f:
sal DWORD PTR [rdi]
ret
g:
mov edi, OFFSET FLAT:i
call f
mov eax, DWORD PTR i[rip]
ret
i:
所以我想做的是: 用户填写第一个输入,按Enter键并自动选择下一个文本框。将其视为按下的标签。
但function addFocusSupport() {
$(".mGrid").find('input').each(function (index, element) {
// Here we get all the TextFields
alert($(this));
$(this).on("keypress",
function (e) {
if (e.KeyCode() === 13) {
// Focus next textfield
alert("Enter Pressed");
var nextElement = $('[index="' + (this.Index + 1) + '"]');
nextElement.focus();
alert(nextElement);
e.preventDefault();
}
// TODO: For last TextField, do nothing
});
});
}
之后的事件从未被触发过?
答案 0 :(得分:2)
更改:强>
if (e.KeyCode() === 13) {
要强>
if (e.which === 13) {
KeyCode()
不是获取密钥的正确方法。您正在考虑event.keyCode
,这已被弃用。如果您使用的是jQuery,event.which
会被规范化以适用于所有浏览器。没有jQuery,请确保检查所有情况:
var key = event.which || event.charCode || event.keyCode
要聚焦下一个输入元素,请执行以下操作:
$(this).next('input').focus();
答案 1 :(得分:2)
就我而言,以下代码可以正常工作。
$('body').on('keydown', 'input, select', function(e) {
if (e.which === 13) {
var self = $(this), form = self.parents('form:eq(0)'), focusable, next;
focusable = form.find('input').filter(':visible');
next = focusable.eq(focusable.index(this)+1);
if (next.length) {
next.focus();
}
return false;
}
});
答案 2 :(得分:1)
您可以使用以下代码
$(function() {
$(".mGrid >input").off('keyup').on('keyup', function(e) {
if (e.which === 13) {
$(this).next('input').focus();
}
});
});
这是一个有效的Jsfiddle demo
希望这会对你有所帮助