模拟按住Ctrl键

时间:2012-02-22 13:54:52

标签: javascript jquery events keydown multi-select

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

我找到了一个简单的解决方案here,但这在ie8中不起作用(因为即onmousedown does not apply to option elements)。

但我想,只要鼠标悬停在多重选择上,就可以模拟按下的控制键:

$(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 键?
  • 代码有问题吗?
  • 我完全错过了其他的东西吗?

2 个答案:

答案 0 :(得分:2)

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

所以很遗憾你不得不放弃这种方法并寻找其他选择。

答案 1 :(得分:0)

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

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