1

入力されたフィールドに基づいてオプションを表示するコンテキスト メニューがあります。コンテキストはフィールドと同じページにあるため、テキスト ボックスにコンテンツを配置すると、コンテキスト メニューにすぐに表示されるようにします。これはすべて機能します。

これは、コンテキスト メニューを介してプログラムの他のセクションのテキスト フィールド/エリアに挿入できるフラグを定義するページです。これらのフラグを使用するフィールドの 1 つが同じページにあります。

私の問題は、どのフィールドにも入力されていない場合です。コンテキスト メニューを右クリックすると、項目が定義されていないという 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;
    }
});
4

1 に答える 1

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;
}
于 2013-10-31T22:26:32.733 に答える