Domanda

Sto usando l'ottimo jEditable plug-in per un po 'la modifica sul posto sulla mia pagina . C'è un punto ho bisogno di un elemento di selezione multipla. C'è un plugin jEditable che mi permette di fare questo?

Ho cercato di utilizzare la jEditable plugin API dell'autore di creare il mio multiselect plug-in, ma niente da fare finora. Non solo non sembra essere abbastanza documentazione su ciò che ogni funzione fa nell'API. E ogni singolo esempio plug-in che offre sembra fare affidamento su altri plugin jQuery. Ho solo bisogno di un elemento di selezione multipla di base ...

È stato utile?

Soluzione

Ho fatto una piccola patch per il suggerimento di Kalyan che ha causato non di lavorare senza l'opzione facoltativa "selezionato", e unhardcoded l'attributo size. Poi ho modificato per essere un plugin jEditable piuttosto che qualcosa che si deve incollare in jEditable stessa. Attualmente sto usando questo su un sito web del cliente, anche se lo uso popolato esclusivamente da una stringa JSON in modo che altri metodi possono essere ancora 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');
            }
        });
    }
});

Altri suggerimenti

Sono stato alla ricerca per lo stesso pure. Cercando di raggiungere questo, ma nulla sembra funzionare.

A proposito, ho trovato questo, ma questo doesnt sembrano funzionare sia - http://pastebin.com/cbDndv5h

Il plugin jeditable fare questo. Esempio:

$('.editable').editable('http://www.example.com/save.php', { 
 data   : " {'E':'Letter E','F':'Letter F','G':'Letter G', 'selected':'F'}",
 type   : 'select',
 submit : 'OK'
});
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top