我有一个事件处理程序,在单击选择框中的选项时执行。
$('#my-select').live('change', function(evt) {
....
});
有没有办法将Ctrl键的状态(按下/未按下)传递到事件处理程序? evt不包含此信息,因为所有关键相关属性都未定义。
答案 0 :(得分:0)
change
事件和用于输入值 change
事件不是具有关键字的事件。请阅读jQuery的.change()
文档:
更改事件在其值更改时发送到元素。此事件仅限于元素,框和元素。对于选择框,复选框和单选按钮,当用户使用鼠标进行选择时会立即触发事件,但对于其他元素类型,事件将延迟,直到元素失去焦点。
例如:
some name
”文字。some test
”,例如。通过按退格键几次,然后导航到下一个字段(例如,通过使用 Tab 键,或通过点击iOS键盘上的 Next 等),onchange
事件处理程序被触发,因此有关用于输入值的所有键的信息非常不相关。keypress
事件要解决该问题,您需要使用keypress
事件来实现您的解决方案,例如。感谢jQuery的.keypress()
function。在这种情况下,事件对象的ctrlKey
属性(列出例如here)可以让您了解 Ctrl 键的状态。示例用法在此处:https://stackoverflow.com/a/4604093/548696
keypress
/ keydown
/ keyup
保存密钥并阅读change
可在此处获取:
http://jsfiddle.net/tadeck/vPu94/
演示清除焦点上记录的键,将它们保存在每个keypress
事件上(您可以轻松编辑并测试不同的案例)并在change
事件时读取它们(以及在屏幕上输出)被触发(所以当更改的字段离开焦点时)。