Как определить, что Ctrl + R был нажат? - PullRequest
26 голосов
/ 04 мая 2010

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

UPDATE

    ///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' при включении?

Ответы [ 9 ]

47 голосов
/ 04 мая 2010

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

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

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

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

РЕДАКТИРОВАТЬ: Удалена переменная Ctrl, забыл про CtrlKey

5 голосов
/ 14 ноября 2012

Это код, который я использую для отключения обновления в IE и Firefox (хорошо работает для F5 , Ctrl + F5 и Ctrl * +1008 * + 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>

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

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

5 голосов
/ 04 мая 2010

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

2 голосов
/ 04 мая 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);

право

1 голос
/ 18 февраля 2018

Используйте 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

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

1 голос
/ 13 мая 2014
 $(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");
        }     
    });
});

коды клавиш

1 голос
/ 04 мая 2010

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

$(document).keypress(function(e) { 
   alert("Ctrl is pressed: " + e.ctrlKey); 
}); 
0 голосов
/ 06 марта 2019
@HostListener('window:keydown', ['$event'])
  keyEvent(event: KeyboardEvent) {

   if (event.ctrlKey && event.keyCode == 82)
    {

    }
  }
0 голосов
/ 19 апреля 2012

Код ключа для Ctrl : 11.

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


  alert("Ctrl is pressed: " + e.ctrlKey); 
}); 
...