tab键的keyup / Keydown事件不起作用

时间:2014-03-24 04:00:35

标签: javascript jquery

我使用tabup的keyup事件。但出于某种原因,代码只能运行其他密钥代码,如38,40,13。通过按Tab键,它只执行默认的Tab键操作并忽略代码。请帮忙。

dom.live('keyup', function (e) {
    var newDom = $(this);
    var suggestionpageCount = newDom.attr('data-counter');
      if ((e.keyCode == 38) || (e.keyCode == 40)) {
        ..some code here

    }
    else if (e.keyCode == 13) {
        ..some code here
    }
else if (e.keycode == 9) {
        ..some code here
    }

我也尝试在dom.live上添加它(' keydown',功能(e) 但它不起作用..

所以我注意到当光标聚焦在文本框上时,keyup / keydown函数对tab键不起作用。你有什么想法?感谢

1 个答案:

答案 0 :(得分:1)

你需要做的是听父亲的keydown和delegate事件向下,tab键的默认行为是改变元素焦点,这意味着keyup发生在页面的下一个元素上。

$('.myTextArea').parent().on('keydown', '.myTextArea', function(e) {
  if (e.keyCode === 9) {
    e.preventDefault();
    console.log('Tab key pressed');
  }
});

以上未经过测试,但应该可以使用。

另外,请尝试使用switch代替大量if/else语句。它们更易于阅读,并且如果是其他的

,通常会表现得更好