Jquery contextMenu插件无法接受默认选择

Jquery contextMenu plugin fails to accept default selection

本文关键字:默认 选择 contextMenu 插件 Jquery      更新时间:2023-09-26

使用此处的示例

 select: {
                name: "Select", 
                type: 'select', 
                options: {1: 'one', 2: 'two', 3: 'three'}, 
                selected: 2
            }

拒绝下拉菜单的默认选择为CCD_ 1,而是将其保留为one。我们使用的是jQuery 1.8,这个版本的上述代码是否存在已知问题,或者是否有一些解决方法?这个问题甚至在演示页面上仍然存在。

Environment:
jQuery 1.8
Firefox 19.0

工作小提琴

我检查了插件,我认为它从未使用过select的selected值,但它只在运行时使用当前值。

这是因为setInputValues函数在data对象中未定义的情况下设置所选属性。我通过仅在数据对象未定义的情况下设置属性来修复代码。

参见:

// import values into <input> commands
$.contextMenu.setInputValues = function(opt, data) {
    if (data === undefined) {
        data = {};
    }
    $.each(opt.inputs, function(key, item) {
        switch (item.type) {
            case 'text':
            case 'textarea':
                item.value = data[key] || "";
                break;
            case 'checkbox':
                item.selected = data[key] ? true : false;
                break;
            case 'radio':
                item.selected = (data[item.radio] || "") == item.value ? true : false;
                break;
            case 'select':
                if (data[key]!=undefined ){
                  item.selected = data[key] || "";
                }
                break;
        }
    });
};

工作小提琴:http://jsfiddle.net/vYnv3/1/

以下是固定代码的粘贴框:http://pastebin.com/Mg3j7ifB

如果有效的话,我会解决的。

编辑

增加了对无线电和复选框的支持:

// import values into <input> commands
$.contextMenu.setInputValues = function(opt, data) {
    if (data === undefined) {
        data = {};
    }
    $.each(opt.inputs, function(key, item) {
        switch (item.type) {
            case 'text':
            case 'textarea':
                item.value = data[key] || "";
                break;
            case 'checkbox':
                if (data[key]!=undefined ){
                    item.selected = data[key] ? true : false;
                }
                break;
            case 'radio':
                if (data[item.radio]!=undefined ){
                    item.selected = (data[item.radio] || "") == item.value ? true : false;
                }
                break;
            case 'select':
                if (data[key]!=undefined ){
                  item.selected = data[key] || "";
                }
                break;
        }
    });
};

新粘贴箱:http://pastebin.com/c8XFVMiD

工作小提琴:http://jsfiddle.net/vYnv3/2/