जैसा कि पहले ही उत्तर दिया, यह ब्राउज़र पर लेने के लिए वास्तव में इस्तेमाल किया जा रहा, का उपयोग करते हुए .bind('copy', func....)
केवल ContextMenu की प्रतिलिपि नहीं सुनेगा हटाना ContextMenu संभव नहीं है, लेकिन यह भी CTRL+c
के रूप में यह वास्तव में क्लिपबोर्ड के लिए बाध्य है।
मैं एक साथ एक प्लगइन है, जो ईमानदारी से डाल दिया है एक हैक का एक सा है, लेकिन यह आप को पकड़ने के लिए अनुमति देगा:
प्रसंग कॉपी, कट, चिपकाएं, हटाएं - केवल
प्रसंग कॉपी, कट, चिपकाएं, हटाएं - और - Ctrl + C, Ctrl + एक्स, Ctrl + V
या सिर्फ एक, दो, तीन या चार मद (रों) के ऊपर किसी एक तरीके से ।बेशक एक समस्या आईई थी, यह बदलावों को सुनने के लिए jQuery .bind('input', func....
ट्रिगर नहीं करता है, इसलिए मुझे इसे IE के लिए ट्रिगर करने की आवश्यकता है, इसलिए (मिलीसेकंड) में भिन्न देरी हो सकती है।
प्लगइन:
(function($) {
$.fn.contextDelete = function(options) {
var set = {
'obj': $(this),
'menu': false,
'paste': false,
'cut': false,
'copy': false,
'set': '',
'ie': null,
};
var opts = $.extend({
'contextDelete': function() {},
'paste': function() {},
'cut': function() {},
'copy': function() {},
'contextOnly': false,
}, options);
$(window).bind({
click: function() {
set.menu = false;
},
keyup: function() {
set.menu = false;
}
});
set.obj.bind({
contextmenu: function() {
set.menu = true;
set.paste = false;
set.cut = false;
set.copy = false;
set.val = set.obj.val();
// Hack for IE:
if ($.browser.msie) {
set.ie = setInterval(function() {
set.obj.trigger($.Event('input'));
if (!set.menu) {
clearInterval(set.ie);
}
}, 300);
}
// End IE Hack
},
paste: function(e) {
set.paste = true;
if (opts.contextOnly) {
if (set.menu) {
opts.paste(e);
set.menu = false;
}
}
else {
opts.paste(e);
}
},
cut: function(e) {
set.cut = true;
if (opts.contextOnly) {
if (set.menu) {
opts.cut(e);
set.menu = false;
}
}
else {
opts.cut(e);
}
},
copy: function(e) {
set.copy = true;
if (opts.contextOnly) {
if (set.menu) {
opts.copy(e);
set.menu = false;
}
}
else {
opts.copy(e);
}
},
input: function(e) {
if (set.menu && (!set.paste) && (!set.cut) && (!set.copy)) {
if (set.obj.val().length < set.val.length) {
opts.contextDelete(e);
set.menu = false;
}
}
}
});
};
})(jQuery);
एक उदाहरण के उपयोग, ContextMenu हटाना + संदर्भ कॉपी ही:
$('#evalname').contextDelete({
contextDelete: function(e) {
alert('You just deleted something!');
},
copy: function(e) {
alert('You just copied something!');
},
contextOnly: true,
});
Click Here for a DEMO
अच्छा सवाल :) +1 – abuduba
सुनिश्चित नहीं हैं कि मैं आपके सवाल का understans, आप "हटाएँ" के साथ क्या मतलब है? चयनित पाठ पर संदर्भ मेनू विकल्प बटन? क्या 'परिवर्तन ईवेंट' का उपयोग करने के लिए पर्याप्त नहीं होगा और शून्य/खाली स्ट्रिंग के विरुद्ध मान की तुलना करें? – Stefan