Как уже ответил, что это не возможно подобрать в браузерах Контекстное удаления используется, на самом деле, используя .bind('copy', func....)
не только слушать копии Контекстное, но и CTRL+c
, как это на самом деле связывания в буфер обмена.
я соединил плагин, который, честно говоря, немного рубить, но это позволит вам поймать:
Контекстное копирование, вырезание, вставка, удаление - ТОЛЬКО
Контекстное копирование, вырезание, вставка, удаление - и - CTRL + C, CTRL + X, CTRL + v
или только один, два, три или четыре элемента (s) в любом из указанных выше способов ,Конечно, одной из проблем был IE, он не запускает jQuerys .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