Frage

Ich benutze das ausgezeichnete Jeditable Plugin für einige Einstellungen auf meiner Seite. Es gibt einen Punkt, an dem ich ein mehrfach ausgewähltes Element benötige. Gibt es ein jedierbares Plugin, das es mir ermöglicht, dies zu tun?

Ich habe versucht, das zu benutzen Jeditable Plugin -API des Autors, um mein eigenes Multiselect -Plugin zu erstellen, aber bisher keine Würfel. Es scheint einfach nicht genug Dokumentation darüber zu geben, was jede Funktion in der API macht. Und jedes einzelne Beispiel -Plugin, das er bietet, scheint auf andere JQuery -Plugins zu stützen. Ich brauche nur ein grundlegendes Mehrfachauswahlelement ...

War es hilfreich?

Lösung

Ich machte einen kleinen Patch zu Kalyans Vorschlag, der es nicht ohne die optionale "ausgewählte" Option funktionierte, und das Größenattribut unversehrt. Dann modifizierte ich es als ein klagbares Plugin und nicht als etwas, das Sie selbst in ein jedierbares Einfügen einfügen müssen. Ich verwende dies derzeit auf einer Kundenwebsite, obwohl ich es ausschließlich von einer JSON -Zeichenfolge verwendet habe, sodass andere Methoden möglicherweise noch fehlerhaft sind.

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

Andere Tipps

Ich habe auch das gleiche gesucht. Der Versuch, das zu erreichen, aber nichts scheint zu funktionieren.

Übrigens habe ich das gefunden, aber das scheint auch nicht zu funktionieren - http://pastebin.com/cbdndv5h

Das jeditable Plugin tun dies. Beispiel:

$('.editable').editable('http://www.example.com/save.php', { 
 data   : " {'E':'Letter E','F':'Letter F','G':'Letter G', 'selected':'F'}",
 type   : 'select',
 submit : 'OK'
});
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top