【发布时间】: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