我有一个事件处理程序,它在选择框中的选项被单击时执行。将附加信息传递到事件处理程序中
有没有办法通过Ctrl键(按下/未按)到事件处理程序的状态? evt不包含这些信息,因为所有与密钥相关的属性都是未定义的。
我有一个事件处理程序,它在选择框中的选项被单击时执行。将附加信息传递到事件处理程序中
有没有办法通过Ctrl键(按下/未按)到事件处理程序的状态? evt不包含这些信息,因为所有与密钥相关的属性都是未定义的。
change
事件,并用于输入值的change
事件的关键是不是有相关联的密钥。请阅读jQuery的.change()
文档:
当元素值发生更改时,将更改事件发送给元素。此事件仅限于元素,框和元素。对于选择框,复选框和单选按钮,当用户使用鼠标进行选择时,会立即触发事件,但对于其他元素类型,事件将被推迟直到元素失去焦点。
的例子是这样的:
some name
”文本。some test
”,例如。通过按退格几次,那么你导航到下一个字段(例如,通过使用标签键,或者通过点击接下来 iOS上的键盘等),onchange
事件处理程序被触发,当你浏览到其他字段(或者说,只要字段丢失焦点),所以用于输入值的所有键的信息都是非常不相关的。keypress
事件为了解决这个问题的解决方案,就需要使用keypress
事件,例如,实现您的解决方案。感谢jQuery的.keypress()
function。在这种情况下,事件对象的ctrlKey
属性(列出如here)可让您了解Ctrl键的状态。用法示例是在这里:https://stackoverflow.com/a/4604093/548696
keypress
//keyup
和阅读change
它可以在这里找到:
http://jsfiddle.net/tadeck/vPu94/
演示清除焦点记录键,将它们保存在每个keypress
事件中(您可以轻松编辑并测试不同情况),并在每次触发change
事件时读取它们(并在屏幕上输出)(因此,当t他改变了场地叶子的焦点)。
在这种情况下很难看出这可能会有帮助。你可以编码演示请Tadeck。 – 2013-04-07 01:22:13
@ Beetroot-Beetroot:基本思想很简单:onchange不知道用于输入值的键,而onkeypress知道它。所以,你需要使用'onkeypress'来收集正确的信息,然后在'onchange'被调用时读取它。您可以使用jQuery的'.data()'来处理与特定输入相关的数据保存(按键)和读取(更改数据)。其余部分实际上是应用程序的实际部分,并且取决于您的特定需求(例如,如何处理退格空间)。 – Tadeck 2013-04-07 02:21:27
@ Beetroot-Beetroot:我添加了演示链接。 – Tadeck 2013-04-07 02:46:58
change事件只会触发模糊值的变化,因此没有键的概念,所以您必须使用keyup,keydown,keypress等。 live()在更新版本的jQuery中被删除。 – adeneo 2013-04-07 00:08:28
你想实现多选下拉菜单吗?如果是这种情况,那么现成的插件会为你做这件事 – 2013-04-07 00:10:20
我只是想指出,'CTRL' +点击默认打开Mac上的上下文菜单。如果您的网站也针对Mac用户,那么我不会使用“CTRL”做任何操作并点击。 – 2013-04-07 00:11:37