Есть ли JQUERY JEDITALE MULTI-SELECT PLAGIN?
-
22-09-2019 - |
Вопрос
Я использую отличный Jedible Плагин для некоторого на месте редактирования на моей странице. Есть одно место, которое мне нужен элемент с множественным выбором. Есть ли джевой плагин, который позволяет мне сделать это?
Я пытался использовать Jedible Авторский плагин API для создания моего собственного плагина MultiSelect, но до сих пор без кубиков. Похоже, что не хватает документации о том, что каждая функция выполняет в API. И каждый плагин, который он предоставляет, полагается на другие плагины jQuery. Мне просто нужен базовый элемент с несколькими выборами ...
Решение
Я сделал небольшой патч, чтобы предложить Каляну, которое заставило его не работать без дополнительного «выбранного» варианта, и не подгонял атрибут размера. Затем я изменил его, чтобы быть подготовленным к дженам, а не то, что вам нужно вставить в сам 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');
}
});
}
});
Другие советы
Я тоже искал. Попытка достичь этого, но, кажется, ничего не работает.
Кстати, я нашел это, но это, похоже, тоже не работает - http://pastebin.com/cbdndv5h
Плагин Jediake делает это. Пример:
$('.editable').editable('http://www.example.com/save.php', {
data : " {'E':'Letter E','F':'Letter F','G':'Letter G', 'selected':'F'}",
type : 'select',
submit : 'OK'
});