【问题标题】:Simulate Holding Ctrl Key模拟按住 Ctrl 键
【发布时间】:2012-03-12 20:42:16
【问题描述】:

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

我找到了一个简单的解决方案here,但这在 ie8 中不起作用(因为在 ie 中,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键是不是又直接被松开了?
  • 代码有问题吗?
  • 我是否完全错过了其他东西?

【问题讨论】:

    标签: javascript jquery events keydown multi-select


    【解决方案1】:

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

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

    【讨论】:

    • 我认为可能是这样,有人这么说here。但我认为它可能仍然有效,因为这不会调用浏览器功能(对吗?)。感谢您的回答
    【解决方案2】:

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

    在代码中编写在选择新函数时取消选中其他函数的函数比防止这种默认行为更容易。

    【讨论】:

    • Yes 复选框可以解决控制键的问题。但是由于这个特定的选择中有很多值,所以复选框对用户来说是不切实际的。还是谢谢
    • 你不能把很长的复选框列表放入你自己的可滚动 div 中,有效地创建你自己的列表控件吗?
    • 虽然这是可能的,但我认为这并不比原生控件更好(有它的缺点..)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-20
    • 2010-10-21
    • 2016-02-20
    相关资源
    最近更新 更多