【问题标题】:keyup() bug in Firefox and Chrome?Firefox 和 Chrome 中的 keyup() 错误?
【发布时间】:2010-01-28 15:35:08
【问题描述】:
 $('input').keyup(function(e){
  var k = e.keyCode ? e.keyCode : e.which;          
  console.log(k);  

  });

.

    <input type="text" name=""  autocomplete="off"/>

为什么 keyup 会触发两次,但仅在特殊键(箭头、空格、退格等)的第二次打击之后触发? - 有什么解决方案可以解决这个问题吗? - 自动完成它已关闭 - 在 IE 中它工作正常 - 使用 keydown 或 keypress 对 FF 和 Chrome 工作正常 - 但我不能使用按键,因为它不适用于 IE 的特殊键 - 我不能使用 keydown,因为我需要输入的值,包括我刚刚输入的字符。像这样$(this).val(); - (我需要它来进行实时搜索)。 Keydown 将给出值但没有最后一个字符。也许您可以在这个方向上给我一个想法 - 如何使用 keydown 捕获包含最后一个字符的值?

【问题讨论】:

  • 您的问题令人困惑。你到底想做什么?空间如何成为“特殊钥匙”?当用户按下空格键时,IE 会触发keypress,而keyup 只会在释放键时触发一次。
  • yes keyup 触发一次,除了箭头、退格、空格、pgDown 等。但它只在 FF 和 Chrome 中存在这个问题。这次使用控制台,你会看到第一次按下箭头时它不会给你任何结果,而在第二次击中例如左键时它会返回两次 37。
  • yes keypress 在 IE 中工作正常,除了箭头和其他几个键。将控制台替换为警报并尝试在 IE 中运行它,您会看到它不会为箭头或退格返回任何内容
  • 是的,我知道。我是说 Firefox 或 Chrome 中的任何键都只会触发一个 keyup 事件,如果您看到两个,那么您的代码中一定有错误。
  • Chrome 中的按键也不会触发箭头、删除、插入等操作

标签: javascript jquery onkeyup


【解决方案1】:

基于你的问题,我有点困惑,将 keyup 和 .val() 结合起来不会做你想要的吗?

$('input').keyup(function(e){
  liveSearchFunction($(this).val());
});

如果不是,请详细说明。

【讨论】:

  • Yes keyup 将给出我需要的值(包括最后一个字符)。但是当我尝试使用向上和向下箭头在结果列表上导航时,或者我按下退格键时,第一个笔划不会什么都不做,第二个笔划会触发两次。 (所以基本上它会跳过一个结果)。当您按下箭头或退格键、输入等时,放置我的代码并密切关注控制台结果
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-06-30
  • 2012-10-08
  • 2020-04-11
  • 2014-06-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多