2008-10-26 9 views
64

jQuery documentation कहता है कि लाइब्रेरी में निम्नलिखित घटनाओं के लिए अंतर्निहित समर्थन है: धुंध, फोकस, लोड, आकार बदलें, स्क्रॉल करें, अनलोड करें, क्लिक करें, डीबीएलक्लिक, मूसडाउन, माउसअप, मूसोमव, माउसओवर, माउसआउट, माउसएन्टर, माउसलेव, चेंज, सिलेक्ट , सबमिट, कीडाउन, कीप्रेस, कीप, और त्रुटि।आप jQuery में oncut, oncopy, और onpaste को कैसे प्रबंधित करते हैं?

मुझे कट, कॉपी और पेस्ट ईवेंट को संभालने की आवश्यकता है। यह कैसे करना सबसे अच्छा है? एफडब्ल्यूआईडब्ल्यू, मुझे केवल वेबकिट (भाग्यशाली मुझे!) के बारे में चिंता करने की ज़रूरत है।

अद्यतन: मैं डैशबोर्ड जैसी वातावरण में "विजेट" पर काम कर रहा हूं। यह वेबकिट का उपयोग करता है, इसलिए यह केवल वास्तव में मायने रखता है (मेरे उद्देश्यों के लिए) क्या इन घटनाओं का समर्थन किया जाता है, जो ऐसा लगता है कि वे हैं।

+0

इस उत्तर के लिए एक सा शोध में मैंने पाया है आईई (!!) 'window.clipboardData' के माध्यम से जावास्क्रिप्ट में क्लिपबोर्ड से पढ़ने के लिए समर्थन किया है। फ़ायरफ़ॉक्स, शुक्रिया नहीं है। मुझे संदेह है कि वेबकिट या तो सचेत है। क्या आप वाकई कट/कॉपी/पेस्ट कमांड को संभालने की ज़रूरत है? शायद आप गलत परिप्रेक्ष्य से समस्या का सामना कर रहे हैं। यदि आप अपने अनुरोध के पीछे कारण प्रदान करने के लिए अपना उत्तर संपादित करते हैं, तो शायद मैं या कोई और आपको और सहायता दे सकता है। –

+0

तो jQuery आंशिक समर्थन दस्तावेज नहीं करता है, मेरा मतलब पेस्ट और कॉपी जैसी घटनाओं के लिए है। – ars265

उत्तर

89

आप जोड़ सकते हैं और, .on() और off() तरीकों का उपयोग कर

इस प्रयास करें द्वारा किसी भी प्रकार की घटनाओं को दूर उदाहरण के लिए

jQuery(document).on('paste', function(e){ alert('pasting!') }); 

jQuery वास्तव में घटना प्रकार आपके द्वारा सौंपे जाने समर्थित है या नहीं करने के लिए काफी उदासीन है सकते हैं ब्राउज़र द्वारा, इसलिए आप तत्वों (और सामान्य वस्तुओं) के लिए मनमानी घटना प्रकार असाइन कर सकते हैं जैसे:

jQuery('p').on('foobar2000', function(e){ alert(e.type); }); 

कस्टम घटना प्रकार के मामले में, आप उन्हें "मैन्युअल" अपने कोड में, .trigger() करना होगा:

jQuery('p').trigger('foobar2000'); 

साफ हाँ?

इसके अलावा, मालिकाना/एक क्रॉस ब्राउज़र संगत रास्ते में कस्टम डोम की घटनाओं के साथ काम करने के लिए, आप का उपयोग/एक "jQuery घटना प्लगइन" jquery.event.wheel.js ब्रैंडन हारून के में देखा जा सकता ... उदाहरण जिनमें से लिखने के लिए आवश्यकता हो सकती है Mousewheel plugin

+0

टूटे हुए लिंक: 'off' और' jquery.event.wheel.js'। –

+1

.ऑफ लिंक ठीक है, और jquery.event.wheel.js को 'eted चिह्नित किया गया है लेकिन ऐतिहासिक कारणों से छोड़ा गया है। –

14

जावास्क्रिप्ट में विभिन्न क्लिपबोर्ड ईवेंट उपलब्ध हैं, हालांकि समर्थन स्पॉटी है। QuicksMode.org में compatibility grid और test page है। घटनाओं को jQuery के माध्यम से प्रकट नहीं किया गया है, इसलिए आपको या तो पुस्तकालय का विस्तार करना होगा या मूल जावास्क्रिप्ट घटनाओं का उपयोग करना होगा।

7

मोज़िला एक "इनपुट" ईवेंट का समर्थन करता है जिसके लिए मुझे उपयोगी दस्तावेज़ीकरण खोजने में परेशानी हो रही है। कम से कम, मुझे पता है कि यह पेस्ट पर आग लगती है।

this.addEventListener('input', 
    function(){//stuff here}, 
    false 
    ); 
+1

धन्यवाद, जोश। ऐसा लगता है कि एफएफ और आईई में काम करता है। '$ ('# myinput')। बाइंड ('इनपुट', फ़ंक्शन() {my_immediate_response_function();});' –

+0

एफएफ, आईई, क्रोम और सफारी में ठीक काम करने लगता है! सुपर, धन्यवाद। –

+3

IE 9 में, यदि आप पाठ हटाते हैं तो इनपुट ईवेंट आग नहीं होता है (या तो कीबोर्ड या राइट-क्लिक | कट) के साथ। क्रोम और एफएफ में यह करता है। अच्छा काम, माइक्रोसॉफ्ट! –

1

jQuery 1.7 के रूप में आप बाँध (...) और अनबाइंड (...) संलग्न और क्रमशः हैंडलर निकाल लिए तरीकों का उपयोग कर सकते हैं।

यहाँ उदाहरण आपके questuion संरेखित हैं:

$('#someElementId').bind('paste', function(){return false;}); 

- यह एक तत्व शरीर में क्लिपबोर्ड से चिपकाने के लिए किसी भी प्रयास अवरुद्ध कर देगा।तुम भी कटौती, घटना प्रकार के रूप में कॉपी और दूसरों (लिंक bellow देखना)

$('#someElementId').bind('copy', function(){return alert('Hey fella! Do not forget about copyrights!');}); 

तो, अन्य मामलों में, जब आप उन संचालकों निकालना चाहते हैं, तो आप अनबाइंड (उपयोग कर सकते हैं) उपयोग कर सकते हैं विधि:

$('#someElementId').unbind('copy'); 

यहाँ कुछ उपयोगी लिंक:

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

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