如何检测右键单击删除使用Jquery/Javascript

前端之家收集整理的这篇文章主要介绍了如何检测右键单击删除使用Jquery/Javascript前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我想跟踪右键单击删除事件在html文本输入。我成功映射右鼠标点击粘贴/剪切/复制如下
$("#evalname").bind('paste/cut/copy',function(e)
          {
             do something

          });

这里’evalname’是我的html文本输入的id。我试过

$("#evalname").bind('delete',function(e)
          {
             do something

          });

但不工作。是否有任何方法映射右鼠标单击删除事件在Jquery / Javascript?

解决方法

如已经回答的那样,不可能在浏览器上使用上下文菜单删除,实际上使用.bind(‘copy’,func ….)不仅可以听取上下文菜单的副本,还可以CTRL c因为它实际上绑定到剪贴板。

我已经放置了一个插件,这是一个老实说是一个黑客,但它会让你抓住:

>上下文COPY,CUT,PASTE,DELETE – 仅
>上下文COPY,CUT,PASTE,DELETE – AND – CTRL c,CTRL x,CTRL v

或者只有一个,两个,三个或四个项目,以上述任何一种方式。当然一个问题是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);

一个例子用法,上下文菜单删除上下文复制只有:

$('#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

原文链接:https://www.f2er.com/jquery/181867.html

猜你在找的jQuery相关文章