Simulate Holding Ctrl Key

白昼怎懂夜的黑 提交于 2020-01-04 04:15:10

问题


I'm currently trying to change the default behaviour of a multiselect element, so that a user can select and deselect multiple values, without having to press the Ctrl key all the while.

I found a simple solution here, but this does not work in ie8 (because in ie, the onmousedown does not apply to option elements).

But I figured, that one could just simulate a pressed control key, whenever the mouse hovers over a multiselect:

$(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);        
    });
});

Why does this not work?

  • Is the Ctrl key directly being released again?
  • Is something wrong with the code?
  • Am I missing something else entirely?

回答1:


You can't simulate such events by programmatically pushing keyboard buttons, just like you can't produce a capital A by simulating the shift key while the user pushes the a key on their keyboard. Besides, even if it would work it wouldn't work: on Macs you press cmd, not ctrl, to select multiple elements.

So unfortunately you'll have to drop this approach and look for other options.




回答2:


You probably need to add a check box for each of your items, rather than a multi select control.

It is easier in code to write functions which uncheck the others when a new one is selected than to prevent this default behaviour.



来源:https://stackoverflow.com/questions/9396182/simulate-holding-ctrl-key

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!