检测Javascript中的特殊按键
我有一个输入框,想在按键时调整数值检测Javascript中的特殊按键,javascript,jquery,html,Javascript,Jquery,Html,我有一个输入框,想在按键时调整数值 'keypress .comment-input': 'onCommentInputKeyBlur', 当按下一个键时,一个类被添加到html元素以反映更改 onCommentInputKeyBlur: function(ev) { var $form = $('#comment-submit'); if (ev.which) { $form.addClass('focused');
'keypress .comment-input': 'onCommentInputKeyBlur',
当按下一个键时,一个类被添加到html元素以反映更改
onCommentInputKeyBlur: function(ev) {
var $form = $('#comment-submit');
if (ev.which) {
$form.addClass('focused');
} else if (!$(ev.currentTarget).val()) {
$form.removeClass('focused');
}
},
但是,这不会检测到按下的特殊键(即当用户按下ctrl+v进行粘贴时,不会检测到,因此格式错误)
使用keyup和keydown可以解决一半的问题,但在短时间内格式化是错误的:
Keydown->在通过按键输入实际值之前,该值不应更改,但当按下ctrl而不是等待第二个键时,该值会立即更改
Keyup->new值在等待键实际释放时短暂粘贴到上一个值上
有没有更好的方法来解决这个问题?理想情况下,我希望检测输入的键是否确实产生值,而不仅仅是一个特殊键 查看onchange事件。它得到了很好的支持,可能会解决您的问题。此功能的最终目标是什么?也许有更好的办法
如果您坚持通过按键事件执行此操作,则只需检查event.keyCode并过滤掉一些不会改变任何内容的按键代码,如shift、control、alt。每当按下一个键时,就会触发
keypress
事件。您是否询问如何确定用户按下的键是否有效?按下control(或类似的特殊键)时,keypress事件未注册。但是,keyup和keydown可以识别它。这将告诉您不同的浏览器如何响应不同的键事件:。你说得对-看起来ctrl
不会触发按键事件。你能提供更多的代码来显示你的尝试吗?我仍然不确定你要处理哪些具体事件。