jquery обработать удержание клавиши ctrl и shift
Мне нужно сделать. Что бы в календарики, даты выделялись учитывая удержание ctrl и shift.
Аналогично механизму выбора файлов в обычном проводнике windows. Опишу алгоритм: Без зажатого ctrl или shift ткнул на 17 число оно выделилось, ткнул на 18, выделилось 18 а 17 выделение пропало. С зажатым ctrl ткнул на 17 выделилось, ткнул на 18, выделено и 17 и 18. И так далее... С зажатым shift ткнул на 17 выделились с 1 по 17. Выделил 17 зажал шифт и ткнул на 20 выделилось с 17 по 20-ое. Поэтому нужен какой то механизм отслеживающий нажатость ctrl и shift. Нагуглил только вот это: http://plugins.jquery.com/project/keyhold |
Начал делать...
$(function(){ var mode = "none"; $(document).keyhold(function(event) { //console.log("hold", event.keyCode); if(event.keyCode == 17) { mode = "ctrl"; } }); $(document).click(function(){ console.log(mode); }); }); Тут если зажат ctrl переменной присваивается значение. И при клике в любом месте документа можно проверять чему равно это значение. Да при зажатом контрол, оно меняется, но нужно что бы оно менялось обратно при отпускании контрол.. |
Кажется достаточно обычных keydown и keyup
$(function(){ var mode = "none"; $(document).keydown(function(event) { //console.log("keydown", event.keyCode); if(event.keyCode == 17) { mode = "ctrl"; } }).keyup(function(event) { //console.log("keyup", event.keyCode); if(event.keyCode == 17) { mode = "not_ctrl"; } }); $(document).click(function(){ //console.log(mode); alert(mode) }); }); |
Как обработать то же самое только в мак, ctrl + shift для select элемента с атрибутом multiple, нужно еще дописывать код?:)
|
Часовой пояс GMT +3, время: 13:57. |