Как определить, что было нажато Ctrl+R?

Я кодирую функцию в jquery, которая выполняется, если нажата Ctrl+R, но я не могу понять, что такое левый и правый коды клавиш Ctrl... Может кто-нибудь помочь?

ОБНОВИТЬ

    ///this works
    $(document).keydown(function(e){
      if(e.keyCode==17){alert("control was pressed")};
 });

Следующий вопрос. Как связать нажатие клавиши управления и нажатие другой клавиши для выполнения функции?

  if(e.keyCode==17){llCtrlPress=1};
   if(e.keyCode==97 && llCtrlPress=1){DO SOMETHING}
  ????????????

Кажется, это будет работать нормально, но как мне вернуть llCtrlpress на «0» при нажатии клавиши?


person sadmicrowave    schedule 04.05.2010    source источник
comment
@sadmicrowave - я облажался :( Должно было быть 17. Я исправил это сейчас.   -  person karim79    schedule 04.05.2010
comment
Если вы удалите свой исходный вопрос, он не будет полезен для будущих людей, пожалуйста, оставьте свой исходный вопрос, а затем откройте новый вопрос, если у вас есть другой.   -  person Alan Jackson    schedule 04.05.2010


Ответы (10)


Вы должны использовать функцию keydown для захвата символов Ctrl. Вот моя реализация Ctrl+A:

    $(document).keydown(function(e) {
        if (e.keyCode == 65 && e.ctrlKey) {
            alert('ctrl A');
        }
    });

Ctrl-R сложнее, потому что в большинстве браузеров это Перезагрузить страницу, что означает, что JavaScript не запускается, страница обновляется.

Также обратите внимание: значение keyCode в функциях keydown/keyupup отличается от значений в функциях нажатия клавиш.

EDIT: удалена переменная ctrl, забыл о ctrlKey

person Alan Jackson    schedule 04.05.2010
comment
Эта переменная нуждается в серьезном закрытии - person Josh Stodola; 04.05.2010
comment
В любом случае переменная не нужна, забыл про ctrlKey. Спасибо, Линкольк и Джош. - person Alan Jackson; 04.05.2010

Здесь приведен полный список кодов клавиш, которые вы можете использовать.

person Gabe    schedule 04.05.2010
comment
Ссылка мертва. Обновился ресурс? - person BReal14; 20.10.2014

Это код, который я использую для отключения обновления в IE и Firefox (это хорошо работает для F5, Ctrl+F5 и Ctrl+R)

<script language="javascript" type="text/javascript">
    //this code handles the F5/Ctrl+F5/Ctrl+R
    document.onkeydown = checkKeycode
    function checkKeycode(e) {
        var keycode;
        if (window.event)
            keycode = window.event.keyCode;
        else if (e)
            keycode = e.which;

        // Mozilla firefox
        if ($.browser.mozilla) {
            if (keycode == 116 ||(e.ctrlKey && keycode == 82)) {
                if (e.preventDefault)
                {
                    e.preventDefault();
                    e.stopPropagation();
                }
            }
        } 
        // IE
        else if ($.browser.msie) {
            if (keycode == 116 || (window.event.ctrlKey && keycode == 82)) {
                window.event.returnValue = false;
                window.event.keyCode = 0;
                window.status = "Refresh is disabled";
            }
        }
    }
</script>

Если вы не хотите использовать агент пользователя для определения типа браузера ($.browser использует navigator.userAgent для определения платформы), вы можете использовать

if('MozBoxSizing' in document.documentElement.style) - возвращает true для firefox

person Saurav S.    schedule 14.11.2012
comment
Пользователь не просил отключить F5, поэтому ваш ответ (хотя и полезный) не отвечает на вопрос. - person George Stocker; 14.11.2012
comment
Кроме того, это ужасно, что вы пытаетесь отключить основные функции браузера; какую бы проблему вы ни пытались решить, это не правильный ответ. - person Jon z; 18.12.2014

Существует логическое свойство с именем ctrlKey, которое вы можете использовать здесь. ..

$(document).keypress(function(e) { 
   alert("Ctrl is pressed: " + e.ctrlKey); 
}); 
person Josh Stodola    schedule 04.05.2010

почему ты не используешь e.ctrlKey ?

 if (e.keyCode == 65 && e.ctrlKey) {
     alert('ctrl A');
 }

edit: вот подходящая функция для обнаружения нажатия клавиши ctrl-r и предотвращения перезагрузки браузера.

function keydown(e) {
    if (e.ctrlKey && e.keyCode == 82) {
        // 82 = r

        // TODO: your thing.

        if (e.preventDefault) {
            e.preventDefault();
        }
        else {
            return false;
        }
    }
}

я новичок в jquery, я думаю, вы бы сделали

$(document).keydown(keydown);

Правильно?

person lincolnk    schedule 04.05.2010

Используйте event.key и современный JS!

$(document).keypress(function(event) {
    if (event.key === "r" && event.ctrlKey) {
        // Do something
    }
});

или без jQuery:

document.addEventListener("keypress", function onEvent(event) {
    if (event.key === "r" && event.ctrlKey) {
        // Do something better
    }
});

Документы Mozilla

Поддерживаемые браузеры

person Gibolt    schedule 18.02.2018

 $(document).ready(function () {
     $(document).keyup(function (e) {
         if (e.keyCode == 81 && e.ctrlKey) { //CTRL+Q
             alert("CTRL+Q");
         } else if (e.keyCode == 27) { //ESCAPE
             alert("escape");
         } else if (e.keyCode == 67 && e.altKey) { // ALT+C
           alert("ALT+C");
        }     
    });
});

ключевые коды

person Jithu    schedule 13.05.2014

Код клавиши Ctrl11.

$(document).keypress(function(e) { 


  alert("Ctrl is pressed: " + e.ctrlKey); 
}); 
person Rahul Kumar    schedule 19.04.2012

  • Чистый JavaScript и KeyboardEvent.key
  • Поддержка metaKey для MAC
  • Используйте Event.preventDefault() для предотвращения перезагрузки
window.addEventListener("keydown", (ev) => {
  if (ev.key === "r" && (ev.ctrlKey || ev.metaKey)) {
    ev.preventDefault(); // Prevent browser reload on CTRL+R
    console.log(ev.key);
  }
});
person Roko C. Buljan    schedule 14.05.2021

Мы также можем использовать код Ascii для поиска символов, а также символов

$('html').keydown(function (e) {
     keydownfunc(e);
});
function keydownfunc(e) {
   if (e.ctrlKey && (e.key === "r" || e.key === "R")) {
       alert("ctrl+R");
   }
    }
person Aravinthan    schedule 07.09.2019
comment
Привет. Это дублирует многие другие ответы. Если вы согласны, пожалуйста, просто удалите его. (И ASCII вообще не связан с JavaScipt и HTML. См. KeyboardEvent.key ) Если вы заинтересованы в ответах на самые новые вопросы по JavaScript, попробуйте поиск или подписка на тег. - person Tom Blodget; 07.09.2019