Jquery:On输入焦点下一个输入

时间:2017-10-11 07:36:17

标签: javascript jquery

我正在尝试在用户使用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 }); }); } 之后的事件从未被触发过?

3 个答案:

答案 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

希望这会对你有所帮助