我有一个输入框,想要在按下某个键时调整该值。
'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 - >在等待实际释放密钥时,新值会暂时粘贴到前一个值上。
有没有更好的解决方法?理想情况下,我想检测输入的密钥是否确实产生了一个值,而不仅仅是一个特殊的密钥。
答案 0 :(得分:0)
查看onchange事件。它得到了相当好的支持,可以解决您的问题。
答案 1 :(得分:0)
此功能的最终目标是什么?也许有更好的方法。
如果您坚持通过按键事件执行此操作,那么您只需检查event.keyCode并过滤掉几个不会改变任何内容的键码,例如shift,control,alt。