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, время: 08:08. |