有一个jQuery jEditable Multi-select插件吗?

时间:2009-10-20 22:55:05

标签: jquery select plugins jeditable multi-select

我正在使用优秀的jEditable插件在我的页面上进行一些就地编辑。我需要一个多重选择元素。是否有一个允许我这样做的jEditable插件?

我一直在尝试使用jEditable作者的插件API来创建我自己的多选插件,但到目前为止还没有骰子。关于每个函数在API中的作用,似乎没有足够的文档。他提供的每个示例插件似乎都依赖于其他jQuery插件。我只需要一个基本的多选元素......

3 个答案:

答案 0 :(得分:2)

我对Kalyan的建议做了一个小补丁,导致它在没有可选的“selected”选项的情况下无法工作,并且未对大小属性进行了解密。然后我将它修改为一个jEditable插件,而不是你必须粘贴到jEditable本身。我目前在客户网站上使用它,虽然我只使用json字符串填充它,所以其他方法可能仍然有问题。

$.editable.addInputType("multiselect", {
    element: function (settings, original) {
        var select = $('<select multiple="multiple" />');

        if (settings.width != 'none') { select.width(settings.width); }
        if (settings.size) { select.attr('size', settings.size); }

        $(this).append(select);
        return (select);
    },
    content: function (data, settings, original) {
        /* If it is string assume it is json. */
        if (String == data.constructor) {
            eval('var json = ' + data);
        } else {
            /* Otherwise assume it is a hash already. */
            var json = data;
        }
        for (var key in json) {
            if (!json.hasOwnProperty(key)) {
                continue;
            }
            if ('selected' == key) {
                continue;
            }
            var option = $('<option />').val(key).append(json[key]);
            $('select', this).append(option);
        }

        if ($(this).val() == json['selected'] ||
                            $(this).html() == $.trim(original.revert)) {
            $(this).attr('selected', 'selected');
        }

        /* Loop option again to set selected. IE needed this... */
        $('select', this).children().each(function () {
            if (json.selected) {
                var option = $(this);
                $.each(json.selected, function (index, value) {
                    if (option.val() == value) {
                        option.attr('selected', 'selected');
                    }
                });
            } else {
                if (original.revert.indexOf($(this).html()) != -1)
                    $(this).attr('selected', 'selected');
            }
        });
    }
});

答案 1 :(得分:1)

我一直在寻找同样的东西。试图实现这一目标,但似乎没有任何效果。

顺便说一句,我发现了这一点,但这似乎也无效 - http://pastebin.com/cbDndv5h

答案 2 :(得分:-1)

可插入的插件可以做到这一点。 示例:

$('.editable').editable('http://www.example.com/save.php', { 
 data   : " {'E':'Letter E','F':'Letter F','G':'Letter G', 'selected':'F'}",
 type   : 'select',
 submit : 'OK'
});