当没有选项时,阻止上下文菜单单击

时间:2013-10-31 22:12:54

标签: jquery contextmenu

我有一个上下文菜单,我根据已填充的字段显示选项。上下文与字段位于同一页面上,因此如果它们将内容放在文本框中,我希望它立即显示在上下文菜单中。所有这一切都有效。

这是我们定义标志的页面,可以通过上下文菜单将其插入到程序其他部分的文本字段/区域中。使用这些标志的其中一个字段位于同一页面上。

我的问题是,如果没有填充任何字段。当右键单击上下文菜单时,我收到一个javascript错误,说明没有定义任何项目。有没有办法阻止上下文菜单在空时触发?

$.contextMenu({
    selector: '.context',
    trigger: 'right',
    build: function($trigger, e){
        var options = {
            callback: function(key, options){
                switch(key){
                    case "Field1":
                    //Code
                    break;
                    //More Options
                }
            },
            items: {}
        }
        if($('#Field1').val() != ""){
            options.items['Field1'] = { name: $('#Field1').val(), icon: "Field1" }
        }
        //More Fields
        return options;
    }
});

1 个答案:

答案 0 :(得分:3)

使用变量来跟踪您是否在菜单中添加了任何项目。然后,如果没有添加,则可以返回false

build: function($trigger, e){
    var showMenu = false;
    var options = {
        callback: function(key, options){
            switch(key){
                case "Field1":
                //Code
                break;
                //More Options
            }
        },
        items: {}
    }
    if($('#Field1').val() != ""){
        options.items['Field1'] = { name: $('#Field1').val(), icon: "Field1" };
        showMenu = true;
    }
    //More Fields
    return showMenu && options;
}