2009-07-31 5 views
16

पर आयोजित नियंत्रण कुंजी का पता लगाएं मैंने एक अच्छा सौदा खोजा है, और एक संतोषजनक समाधान नहीं लग रहा है। मुझे आशा है कि कोई मदद कर सकता है।जावास्क्रिप्ट माउसअप

जबकि मैं jQuery का उपयोग कर रहा हूं, मैं जावास्क्रिप्ट की कई हजारों पंक्तियां भी लिख रहा हूं। तो एक "शुद्ध" जावास्क्रिप्ट समाधान ठीक है।

मैं यह निर्धारित करने की कोशिश कर रहा हूं कि नियंत्रण कुंजी को माउसअप ईवेंट पर शारीरिक रूप से दबाया गया है या नहीं। बस; कोई अन्य पूर्व शर्त नहीं हैं। क्या कोई इस भरोसेमंद, क्रॉस-ब्राउजर को कैसे करना है?

मैं जब कुंजी दबाया जाता है और जारी की है टिप्पण द्वारा एक राज्य चर में इस भंडारण की कोशिश की है:

// 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 

बहरहाल, यह वास्तव में काम नहीं करता। यदि आप फ़ायरबग का उपयोग करके इसका परीक्षण करते हैं और कंसोल देखते हैं, तो आप देखेंगे कि ऑटो-दोहराना प्रतीत होता है, और मान टॉगल करता है।

मैं mouseup घटना का निरीक्षण किया, अगर वहाँ कुछ भी उपयोगी है वहाँ देखने के लिए, लेकिन कोई लाभ नहीं हुआ:

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); 
} 

किसी भी मदद की सराहना की जाएगी।

+0

वाह, मुझे नहीं पता था कि jQuery समर्थित कुंजी घटनाओं को इस तरह से। मुझे इसका कोई दस्तावेज नहीं मिल रहा है। इसके अलावा, $()। बाइंड() (खाली jQuery) काम करता है, या वह सिर्फ शॉर्टेंड है? यदि हां, तो क्या यह $ (दस्तावेज़) से जुड़ा हुआ है? – eyelidlessness

+0

@eyelidlessness: उस तरह की बाध्यकारी जेएस-हॉटकीज नामक एक प्लगइन से है http://code.google.com/p/js-hotkeys/ – CMS

उत्तर

32

आप event.ctrlKey संपत्ति का उपयोग कर सकते हैं।

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

चेक एक चल उदाहरण here

+0

वाह, मैं ईवेंट डीबग के दौरान उस संपत्ति की तलाश में था, और उसे याद करना होगा यह। धन्यवाद! एफएफ 3 पर एक आकर्षण की तरह काम करता है; अब आईई के बारे में देखने के लिए। –

+0

ps डेमो के लिए धन्यवाद, इसकी बहुत सराहना की गई। –

+0

आपका स्वागत है माइकल, इन महत्वपूर्ण संशोधक (शिफ्टकी, ctrlKey, altKey) को वर्ष 2000 के अंत में * डोम लेवल 2 * मानक (http://is.gd/1Vryp) पर पेश किया गया था, और आईई 6 के बाद से समर्थित है। – CMS

संबंधित मुद्दे