【问题标题】:Keydown event for 'Next'“下一个”的按键事件
【发布时间】:2021-03-16 14:06:16
【问题描述】:

我正在使用此代码来处理 tabenter 输入键的 keydown 事件。

$(document).on('keydown', ".className" , function(e) {
  var keyCode = e.keyCode || e.which; 

  alert(keyCode) // does not work for 'next'

  if (keyCode == 9) { //tab key // does not work for 'next'
    e.preventDefault(); 
    if( $(this).parents('tr').next('tr').length == 0){
     $('.add_info').click();  
    }
    $(this).parents('tr').next('tr').find('input:first').focus();
  }

  if (keyCode == 13) { //enter key
    e.preventDefault(); 
        $('.anotherField').focus();
  }
});

tab 键的代码在手机浏览器上不起作用。 .className 字段显示数字键盘,因为输入类型是 number,因此它具有 Next 键和其他键。我尝试alert(keyCode) 只是为了获取Next 的键码,但事件没有触发。无论如何我可以覆盖Next 键的默认行为吗?

【问题讨论】:

  • 看看这个answer
  • @gaetanoM 代码在处理其他键的事件时工作正常,只有在手机或平板电脑的软键盘上不会触发 Next

标签: html jquery events android-softkeyboard keydown


【解决方案1】:

我找不到触发Next 事件的方法,所以我尝试了一种解决方法。

Next 关注页面上的下一个元素。当我的输入失去焦点时,我设置了一个标志。当下一个元素紧跟在该元素之后(如果设置了标志),然后我触发tab 的代码块(当在input 中按下tab 键时我打算做什么。

var from_class_name = 0;
$(document).on('keydown', ".className" , function(e) {
  var keyCode = e.keyCode || e.which; 

  if (keyCode == 9) { //tab key // does not work for 'next'
    e.preventDefault(); 
    if( $(this).parents('tr').next('tr').length == 0){
     from_class_name= 0;
     $('.add_info').click();  
    }
    $(this).parents('tr').next('tr').find('input:first').focus();
  }

  if (keyCode == 13) { //enter key
    e.preventDefault(); 
    from_class_name= 0;
    $('.anotherField').focus();
  }
});


$('#divid').on('focusout', '.className', function(){
    if( $(this).parents('tr').next('tr').length == 0){
        from_class_name = 1;
    }
});
$('.otherelement1, .otherelement2, .otherelement3, .otherelement4').on('focus', function(){
    from_class_name = 0;
});

$('.nextElement').on('focus', function(){ //element which is focused when 'Next' is used
    if(from_class_name == 1) { // the value is 1 when the .className loses focus and no other fields are focused right after it except .nextElement
        from_class_name = 0;
        $('.add_info').click();
    }
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-15
    • 2012-06-04
    • 1970-01-01
    • 2021-12-18
    • 1970-01-01
    • 2020-05-30
    相关资源
    最近更新 更多