【发布时间】: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()。之后在警报中获得未定义。
-
您不需要使用
keyCode。which属性工作正常。bind()现在已被弃用,所以你真的不应该使用它。 -
@RoryMcCrossan,感谢您告诉我 bind() 已被弃用。我真的对此一无所知。另外,我会尝试使用
which来检测按键。谢谢。 -
而不是使用
bind()我使用了解决keyup事件问题的$('#search, #support-search').on( 'input keyup', __search );行。并使用which返回我0而不是 Undefined 这对于比较键很有用。
标签: javascript android jquery firefox keyup