【发布时间】:2014-01-29 08:19:42
【问题描述】:
假设我在输入字段上使用 jQuery 捕获一个 keyup 事件。现在我正在对事件做各种事情,例如对选项卡或输入键做出反应。现在我想确定是否按下了诸如 tab、control、alt、shift 之类的键,或者是否按下了实际改变输入(例如字母、数字、标点符号等)的键。
有什么方法可以确定吗?如何确保检查任何用户在任何地方都可以按下的所有正确键?
我希望我的问题很清楚。
编辑 1:
嗯,我很快就结束了这个问题。还有一个问题。到目前为止我的解决方案(JSFiddle):
$('input').keyup(function(e) {
var lastValue = '';
if(typeof $(this).attr('data-last-value') != 'undefined' && $(this).attr('data-last-value') != '') {
lastValue = $(this).attr('data-last-value');
}
if(lastValue != $(this).val()) {
//This is what I wanted.
}
$(this).attr('data-last-value', $(this).val());
});
问题:例如,如果用户在输入中输入“hello”,然后选择“h”并按下 h 键,则脚本不会将其识别为所需的按键之一,因为该值不是改变。有什么办法可以解决这种行为吗?
【问题讨论】:
-
你能提供一个你描述的问题的工作小提琴吗?有点难以理解你想要什么
-
我添加了小提琴。问题:如果用户按下一个键来编辑内容(例如字母、标点符号、退格等),但当按下其他键(例如 alt、shift、left、right、tab 等)时,我希望条件为真.如何区分这两种类型的键?
-
如果输入没有改变,为什么你需要跟踪被按下的字母?如果您真的需要跟踪它,我认为您需要检查所有可能的非字母键码并检查它们。
-
在我的特殊情况下,用户希望在输入有效值后焦点立即跳转到下一个输入字段。有时这只是一个字母。因此,如果他们例如通过按制表符将焦点放在包含单个字母的输入上,他们可能会再次按该字母并期望被发送到下一个输入。
-
知道了。看看我的更新应该真的有效。
标签: jquery events input onkeyup