模拟按住Ctrl键

我目前正在尝试更改多选元素的默认行为,以便用户可以选择和取消选择多个值,而无需一直按Ctrl键。

我在这里找到了一个简单的解决方案,但这在ie8中不起作用(因为在ie中, onmousedown 不适用于选项元素 )。

但我想,只要鼠标hover在多选中,就可以模拟按下的控制键:

 $(document).ready(function() { $('select').hover(function(e) { var kde = jQuery.Event("keydown"); kde.ctrlKey = true; //something like this kde.keyCode = 17; //or this - i don't know $(e.target).trigger(kde); }); }); 

为什么这不起作用?

  • 是否直接再次释放Ctrl键?
  • 代码有问题吗?
  • 我完全错过了其他的东西吗?

您不能通过以编程方式按下键盘按钮来模拟此类事件,就像您在用户按下键盘上的键时模拟shift键一样无法产生大写A. 此外,即使它可以工作它也行不通:在Mac上你按cmd ,而不是ctrl ,来选择多个元素。

所以不幸的是,你将不得不放弃这种方法并寻找其他选择。

您可能需要为每个项添加一个复选框,而不是多选控件。

在编写函数时,更容易编写在选择新的函数时取消选中其他函数的函数,而不是防止此默认行为。