JSFiddle - React, Tailwind, and code Playground
HTML
<b>First Example</b><br />
This will catch:
<li><u>contextmenu delete</u></li>
<li>contextmenu copy</li>
<li>contextmenu cut</li>
<li>contextmenu paste</li>
<li>CTRL+v</li>
<li>CTRL+p</li>
<li>CTRL+x:</li>
<br />
<input type="text" id="firsttest" value="do ANYTHING with me" />
<br/><br/>
Result:<br />
<div id="r"></div>
<br />
------------------------------------------------------
<br/><br/>
<b>Second Example</b><br />
This will catch:
<li><u>contextmenu delete</u> only</li>
<li>feel free to still bind('cut', func....) for example</li>
<br />
<input type="text" id="secondtest" value="ONLY delete something from me" />
<br/><br/>
Result:<br />
<div id="a"></div>
<br />
------------------------------------------------------
<br/><br/>
<b>Third Example</b><br />
This will catch:
<li><u>contextmenu delete</u></li>
<li>contextmenu copy</li>
<li>contextmenu cut</li>
<li>contextmenu paste</li>
<li><b>NOT</b> CTRL+v, CTRL+p, CTRL+x</li>
<br />
<input type="text" id="thirdtest" value="ONLY do ANYTHING from the contextmenu with me" />
<br/><br/>
Result:<br />
<div id="z"></div>
JavaScript
// Plugin contextDelete:
(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() {},
'allContext': 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.allContext) {
if (set.menu) {
opts.paste(e);
set.menu = false;
}
}
else {
opts.paste(e);
}
},
cut: function(e) {
set.cut = true;
if (opts.allContext) {
if (set.menu) {
opts.cut(e);
set.menu = false;
}
}
else...