【问题标题】:Android/Firefox: event.keycode returns Undefined on keyupAndroid/Firefox:event.keycode 在 keyup 上返回 Undefined
【发布时间】:2017-12-13 09:26:53
【问题描述】:

我有一个带有搜索栏的网站应用程序。搜索栏在 Android 设备上除 Firefox 之外的所有其他浏览器中都能正常工作。

我已通知keyCode 并为每个键获取未定义。

下面是我使用的代码。

domReady(function()
{
  var is_android = navigator.userAgent.toLowerCase().indexOf("android") > -1;
  var is_firefox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;

  if( is_firefox && is_android )
  {
    $('#search, #support-search').bind('input keyup', __search );
  }
  else
  {
    $('#search, #support-search').on( 'keyup', __search );
  }

}

var __search = function( event )
{
  var kc = event.which || event.keyCode;
  alert("KC:"+kc);
  alert("event.keyCode:"+event.keyCode);
}

两个警报都显示未定义。

请让我知道这里出了什么问题。

【问题讨论】:

  • 您的条件强制 android 和 firefox 使用 bind() 毫无意义。 on() 应在所有情况下使用。 domReady() 函数可以作为附加事件的单行符。
  • @RoryMcCrossan,实际上主要问题是 on()。它不起作用,并且没有键码警报。因此,强制 android/firefox 使用 bind()。之后在警报中获得未定义。
  • 您不需要使用keyCodewhich 属性工作正常。 bind() 现在已被弃用,所以你真的不应该使用它。
  • @RoryMcCrossan,感谢您告诉我 bind() 已被弃用。我真的对此一无所知。另外,我会尝试使用which 来检测按键。谢谢。
  • 而不是使用bind() 我使用了解决keyup 事件问题的$('#search, #support-search').on( 'input keyup', __search ); 行。并使用 which 返回我 0 而不是 Undefined 这对于比较键很有用。

标签: javascript android jquery firefox keyup


【解决方案1】:

您的条件强制 Android 和 Firefox 使用 bind() 没有什么意义。 on() 应在所有情况下使用。 domReady() 函数可以做成一个附加事件的单行代码,如下所示:

domReady(function()
  $('#search, #support-search').on('input keyup', __search);
}

var __search = function(e) {
  var kc = e.which || e.keyCode;
  console.log("KC:" + kc);
  console.log("event.keyCode:" + e.keyCode);
}

还要注意使用console.log() 而不是alert() 进行调试。避免使用alert(),因为它会强制数据类型,所以您看到的可能不是实际值。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-16
    • 1970-01-01
    • 1970-01-01
    • 2023-01-31
    • 2020-04-12
    • 2022-06-13
    相关资源
    最近更新 更多