Gibt es ein JQuery Jeditable Multi-Select-Plugin?
-
22-09-2019 - |
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 ...
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'
});