2009-07-31 4 views
16

İyi bir anlaşma araştırdım ve tatmin edici bir çözüm bulamıyorum. Umarım birileri yardım edebilir.Javascript Saptanan Denetim Tuşu Fare Üzerinde Düzenlendi

jQuery'yi kullanırken, binlerce satırlık Javascript yazıyorum. Yani "saf" bir javascript çözümü sadece iyi.

Denetim anahtarının fiziksel olarak bir mouseup olayında tutulup tutulmadığını belirlemeye çalışıyorum. Bu kadar; başka ön şart yoktur. Bu, güvenilir bir şekilde nasıl çapraz tarayıcı yapılacağını bilen var mı?

Ben tuşuna basılır ve bırakıldığında işaret ederek bir durum değişkeni bu depolamak denedim:

// BEGIN store control key status in hash_state 
$().bind('keydown','ctrl',function(arg_obj_e){ 
    hash_state.sw_ctrldn = true; 
    console.debug(hash_state.sw_ctrldn); 
}); 
$().bind('keyup','ctrl',function(arg_obj_e){ 
    hash_state.sw_ctrldn = false; 
    console.debug(hash_state.sw_ctrldn); 
}); 
// END store control key status in hash_state 

Ancak bu gerçekten çalışmıyor. Bunu firebug kullanarak test edip konsolu izlerseniz, otomatik tekrarlamanın gerçekleştiğini ve değerin değiştiğini görürsünüz.

Ben yararlı bir şey olup olmadığını görmek için mouseup olayı teftiş, ama boşuna:

var debugEvent = function(arg_obj_e){ 
    var str = ''; 
    for (var attr in arg_obj_e){ 
    str += attr + ': ' + arg_obj_e[attr] + '\n'; 
    } 
    console.debug(str); 
} 

Herhangi bir yardım mutluluk duyacağız.

+0

Vay canına, jQuery anahtar olaylarını bu şekilde desteklemedim. Herhangi bir belge bulamıyorum. Ayrıca, $() .bind() (boş jQuery) çalışır mı, yoksa sadece shorthand? Öyleyse, $ (document) 'a mı bağlı? – eyelidlessness

+0

@eyelidlessness: Bu tür bir bağlanma js-kısayol tuşları olarak adlandırılan bir eklentiden geliyor http://code.google.com/p/js-hotkeys/ – CMS

cevap

32

event.ctrlKey özelliğini kullanabilirsiniz.

$(function(){ 
    $('#elementId').mouseup(function(e){ 
    var isCtrlPressed = e.ctrlKey; 
    // true or false whether ctrl is pressed or not 
    }); 
}); 

Çalışan örneğini kontrol edin here.

+0

Wow, etkinlik hata ayıklama sırasında bu özelliği arıyordum ve kaçırmış olmalı o. Teşekkür ederim! FF3'te bir çekicilik gibi çalışır; şimdi IE hakkında görmek için. –

+0

ps demo için çok teşekkür ederiz, teşekkür ederim. –

+0

Michael'a hoş geldiniz, bu kilit değiştiriciler (shiftKey, ctrlKey, altKey) 2000 yılının sonlarında * DOM Düzey 2 * standardında (http://is.gd/1Vryp) tanıtıldı ve IE6'dan beri destekleniyor. – CMS