Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 15.12.2010, 18:23
Интересующийся
Отправить личное сообщение для pt81 Посмотреть профиль Найти все сообщения от pt81
 
Регистрация: 29.10.2010
Сообщений: 17

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
Ответить с цитированием
  #2 (permalink)  
Старый 15.12.2010, 19:53
Интересующийся
Отправить личное сообщение для pt81 Посмотреть профиль Найти все сообщения от pt81
 
Регистрация: 29.10.2010
Сообщений: 17

Начал делать...
$(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 переменной присваивается значение. И при клике в любом месте документа можно проверять чему равно это значение. Да при зажатом контрол, оно меняется, но нужно что бы оно менялось обратно при отпускании контрол..
Ответить с цитированием
  #3 (permalink)  
Старый 15.12.2010, 20:05
Интересующийся
Отправить личное сообщение для pt81 Посмотреть профиль Найти все сообщения от pt81
 
Регистрация: 29.10.2010
Сообщений: 17

Кажется достаточно обычных 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)

});


});
Ответить с цитированием
  #4 (permalink)  
Старый 03.12.2011, 00:43
Интересующийся
Отправить личное сообщение для Policeman Посмотреть профиль Найти все сообщения от Policeman
 
Регистрация: 26.11.2011
Сообщений: 25

Как обработать то же самое только в мак, ctrl + shift для select элемента с атрибутом multiple, нужно еще дописывать код?
Ответить с цитированием
Ответ


Опции темы Искать в теме
Искать в теме:

Расширенный поиск