Question

J'utilise l'excellent jEditable plug-in pour certains édition en place sur ma page . Il y a un endroit que je besoin d'un élément de sélection multiple. Y at-il un plugin jEditable qui me permet de le faire?

J'ai essayé d'utiliser le jEditable API de plugin auteur pour créer mon propre multiselect plugin, mais pas de dés jusqu'à présent. Il ne semble pas être la documentation assez sur ce que chaque fonction dans l'API. Et chaque plugin seul exemple, il fournit semble compter sur d'autres plugins jQuery. J'ai juste besoin d'un élément de sélection multiple de base ...

Était-ce utile?

La solution

J'ai fait un petit patch pour la suggestion de Kalyan qui l'a causé de ne pas travailler sans l'option facultative « sélectionnée », et unhardcoded l'attribut de taille. Ensuite, je l'ai modifié pour être un plugin jEditable plutôt que quelque chose que vous devez coller dans jEditable lui-même. J'utilise actuellement ce sur un site client, bien que je l'utilise exclusivement peuplée par une chaîne de JSON pour que d'autres méthodes peuvent encore être buggy.

$.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');
            }
        });
    }
});

Autres conseils

Je cherchais même aussi bien. Essayer de réaliser, mais rien ne semble fonctionner.

Par ailleurs, je trouve cela, mais cela ne marche pas semblent fonctionner soit - http://pastebin.com/cbDndv5h

Le plugin jeditable faire. Exemple:

$('.editable').editable('http://www.example.com/save.php', { 
 data   : " {'E':'Letter E','F':'Letter F','G':'Letter G', 'selected':'F'}",
 type   : 'select',
 submit : 'OK'
});
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top