2013-06-26 2 views
2

Я создаю webapp, где пользователь может щелкнуть любую ячейку в таблице. При щелчке текст этой ячейки копируется и появляется внутри отключенного текстового поля в fancybox, а текстовая область выбирается в js. Затем пользователю предлагается нажать CTRL-C, чтобы скопировать текст, который теперь находится внутри выбранного текстового поля.jQuery hotkeys и CTRL-C

Я хотел бы объединить 2 вещи вместе, когда CTRL-C происходит: (1) Скопировать выделенный текст (2) Закройте FancyBox

Я отлавливать CTRL-C с помощью Jquery горячих клавиш, но один раз Я использую это для вызова метода fancybox close, событие больше не распространяется. все равно использовать оба. Мой код:

$(document).bind('keydown', 'ctrl+c', function(event){ 
    $.fancybox.close(); // if this is commented out, CTRL-C works just fine 
    return true; 
}); 

Я неоднократно объяснял, как этот вопрос отличается от других. В моем первоначальном вопросе я указал, что могу обнаружить нажатия клавиш. Проблема заключалась в том, как обнаружить это, позволить действовать, а также предпринять другое действие. Я дал нижеприведенный ответ, который я выяснил сам.

+0

Где вы ожидаете событие распространяться на? В вашем коде он уже достигает объекта документа. Кроме того, зачем включать 'return true?'? –

+0

Я надеялся, что «return true» будет распространять событие CTRL-C после закрытия fancybox. :) К сожалению, мои знания обработки событий в js довольно ограничены. Если есть еще один способ кодировать это для достижения моей цели, это было бы весьма признательно. –

ответ

3

взгляд на это решение от How to detect that Ctrl+R was pressed?

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

Edit:

<textarea>test</textarea> 
<p id="test"></p> 

$(document).keydown(function(e) { 
    if (e.keyCode == 67 && e.ctrlKey) { 
     /* close fancybox here */ 

     $("#test").text("copied!"); /* optional */ 
    } 
}); 
+0

Я успешно обнаружил, что CTRL-C нажат. Проблема в том, что я хочу, чтобы CTRL-C продолжал и копировал выделенный текст, а также закрывал fancybox. Я не знаю, как это помогает CTRL + R. –

+0

Я все еще не уверен, что понимаю. Ваш отредактированный код перехватит CTRL + C, затем возьмите элемент #test и добавьте текст «скопированный!». к нему. Я пытаюсь взять предварительно выделенный текст из элемента #test, скопировать его в буфер обмена И закрыть fancybox, где находится элемент #test. –

+1

Я понял. Вместо захвата keydown я захватываю клавиатуру. Ключевое слово копирует текст в буфер обмена. Клавиша закрывает причудливый блок и отвязывает захват CTRL + C. –