#MSelectDialogBox - jQuery плагин для интерактивных выпадающих списков.
- Множественный выбор
- События
- Автопоиск варинтов из списка при наборе
- Собственные фильтры автопоиска. Например для исправления раскладки с англ. на рус.
- Можно привязать к любому элементу
- Адаптировано под мобильные устройства
- API предлагает возможность кастомизировать контрол (см. демо)
- Подписи на двух языках (Английский, Русский). Возможность переопределять подписи на встроенных языках и доопределять подписи для других языков.
$("#selector").mSelectDBox({
"list": (function(){
var arr = [];
for(var c=0; c<30; c++){
arr.push(Math.round(Math.random() * 10000));
}
return arr;
})(),
"multiple": false,
"autoComplete": true,
"name": "a"
});После инициализации, работа с параметрами конструктора доступна через методы get и set (см. методы).
Аргумент один, передается как объект с ключами:
- [Array]
list- массив из объектов с двумя ключами типа "строка"{label:String(1),value:String(1)}или просто массив строк
Пример:
var list = [
{"label": "Apple", "value": "0"},
{"label": "Orange", "value": "1"},
{"label": "Banana", "value": "2"}
];Пример:
var list = ["Apple", "Orange", "Banana"];После инициализации, при желании, список можно переназначить присвоив новый массив через "set" метод. Пример:
$("#selector").mSelectDBox(
"set",
"list",
[
"alpha",
"beta",
"gamma",
"delta",
"epsilon"
]
);-
[Boolean]
multiple- вкл. (true) или выкл (false) множественный выбор из списка. По-умолчанию: false. -
[Boolean]
autoComplete- вкл (true) или выкл (false) автопоиск по списку. Только если список прикреплен к текстовому <input> или <textarea>. По-умолчанию: false. -
[Boolean]
openOnFocus- вкл (true) или выкл (false) открытие выпадающего списка по событию onFocus на элементе. Default: true. -
[String]
name- используется для поиска по имени инициализированного экземпляра списка (см. методы). По-умолчанию: undefined. -
[Array]
optionFilters- фильтры для автопоиска. Переключение на русскую раскладку по-умолчанию не включено. По-умолчанию:[$.prototype.mSelectDBox.prototype.defaultOptionFilters.default] -
[Boolean]
embeddedInput- вкл. (true) или выкл. (false) поле для ввода внутри выпадающего списка. По-умолчанию = false -
[String]
width- ширина выпадающего списка. Пример:"10px"or"auto" -
[Number]
zIndex- значения для свойства стиляz-indexвыпадающего списка -
[String]
language- установить язык для экземпляра списка (en | ru)
Фильтр - Функция.
Составляющая автопоиска.
Сравнивает каждый пункт списка со значением ввода.
Возвращает true если удовлетворяет условию поиска, false если нет.
Пример такой функции:
/**
* @param {String} inputString
* @param {String | Number} optionString
*/
function(inputString, optionString){
var pattern = new RegExp(inputString.trim(),"ig");
optionString = String(optionString);
return Boolean(optionString.match(pattern));
}Передаются через конструктор при создании экземпляра (парам. "optionFilters"). Или добавляются после инициализации через instance.get("optionFilters").push(function(matcherStr, matchedStr){...})
Из коробки доступны фильтры:
$.prototype.mSelectDBox.prototype.defaultOptionFilters.default- поиск по-умолчанию$.prototype.mSelectDBox.prototype.defaultOptionFilters.russianKeyboard- поиск с исправлением раскладки на русскую
Язык выпадающего списка устанавливается в конструкторе ключем language
Если язык не указан, библиотека попробует определить язык по настройкам операционной системы.
Предустановленные ключи language:
- en - Английский
- ru - Русский
Пример:
$("#selector").mSelectDBox({
"list": [1, 2, 3],
"language": "en" // Английский
});Чтобы доопределить или переопределить подписи для конкретного языка можно использовать метод setText
// Уже инициализированный экземпляр списка
$("#selector").mSelectDBox("setText", "Tap to close", ".m-select-d-box-fade__outside-click-label-text", "en");Тот же способ если необходимо доопределить язык невходящий в комплект
// Уже инициализированный экземпляр списка
$("#selector").mSelectDBox("setText", "kapatmak için dokunun", ".m-select-d-box-fade__outside-click-label-text", "tr"); // ТурецкийКоды подписей:
.m-select-d-box-fade__outside-click-label-text- "Нажмите чтобы закрыть".m-select-d-box__search-input- поле поиска
-
init- Выполняется после инициализации списка -
onselect- Выполняется когда выбран элемент из списка -
onchange- Выполняется когда <input> был изменен. Аналог оригинального события onchange -
onkeydown- То же что оригинальный onkeydown -
onkeyup- То же что оригинальный onkeyup -
input:empty- Выполняется когда <input> становится пустым -
autocomplete:empty- выполняется когда функция автозаполнения (живой поиск) не находит совпадений и возвращает пустой список -
autocomplete:not-empty- выполняется когда функция автозаполнения (живой поиск) находит совпадения -
focus- Выполняется когда элемент попадает в фокус -
focusout- Выполняется когда элемент теряет фокус -
set- Fires при вызове метода set. Кримеру: instance.set("fieldName", 100); -
set:field- Выполняется при присваивании значения через метод set по конкретному ключу. К примеру: instance.set("field", 100); -
get- Выполняется при вызове метода get. Кримеру: instance.get("fieldName"); -
get:field- Выполняется при получения значения по конкретному ключу. К примеру: instance.get("field"); -
afterSet:field- Выполняется после установки значения по конкретному ключу. Событие гарантирует, что функция будет выполнена после присваивания и будет иметь доступ к новому значению; -
beforeSet:field- Выполняется перед установкой значения по конкретному ключу
События могут быть прикреплены двумя способами:
Пример:
$("#selector").mSelectDBox({
"list": [1,2,3],
"onchange": function(msdbContext, event){
console.log(arguments);
},
"onselect": function(msdbContext, event){
console.log(arguments);
},
"input:empty": function(msdbContext, event){
console.log(arguments);
}
});Пример:
$("#selector").mSelectDBox({
"list": [1,2,3],
"events": {
"change": function(msdbContext, event){
console.log(arguments);
},
"select": function(msdbContext, event){
console.log(arguments);
},
"input:empty": function(msdbContext, event){
console.log(arguments);
}
}
});getInstances([Object] arg) — поиск по имени инициализированных экземпляров списка.
Возвращает массив подходящих экземпляров списка.
Пример:
var dbox = $.prototype.mSelectDBox.prototype.getInstances({"name":"instanceName"});Альтернатива:
var dbox = $("#selector").mSelectDBox();Следующие методы можно вызывать как методы экземпляра так и в качестве параметра для метода mSelectDBox.
var dbox = $.prototype.mSelectDBox.prototype.getInstances({"name":"instanceName"})[0];
dbox.method(...);Альтернатива:
$("#selector").mSelectDBox("method", ...);on([String] eventName, [Function] callback), .("on", [String] eventName, [Function] callback) — устанавливает событие с указанным именем.
Пример:
var dbox = $.prototype.mSelectDBox.prototype.getInstances({"name":"instanceName"})[0];
dbox.on(
"select",
function(msdbContext, event){
console.log(arguments);
}
);Альтернатива:
$("#selector").mSelectDBox(
"on",
"select",
function(msdbContext, event){
console.log(arguments);
}
);trigger([String] eventName), .("trigger", [String] eventName) — запускает указанное событие. (Если оно разумеется заранее установлено)
Пример:
var dbox = $.prototype.mSelectDBox.prototype.getInstances({"name":"instanceName"})[0];
dbox.trigger("select");Альтернатива:
$("#selector").mSelectDBox("trigger","select");select([Object] arg), .("select", [Object] arg) — выделяет из списка элемент по указанному имени или значению.
arg = {"label": Array|String}; или arg = {"value": Array|String};
Пример:
var dbox = $.prototype.mSelectDBox.prototype.getInstances({"name":"instanceName"})[0];
dbox.select({"label": ["100", "200"]});
dbox.select({"label": "100"});
dbox.select({"value": "0"});Альтернатива:
$("#selector").mSelectDBox("select",{"label": ["100", "200"]});Возвращает массив названий (label) выбранных элементов списка
var array = $("#selector").mSelectDBox("getSelectedLabels");Альтернатива:
var array = $("#selector").mSelectDBox().getSelectedLabels();Возвращает массив значений (value) выбранных элементов списка
var array = $("#selector").mSelectDBox("getSelectedValues");Альтернатива:
var array = $("#selector").mSelectDBox().getSelectedValues();selectAll(void) — выбрать все элементы из списка. Только если multiple = true.
deselectAll(void)
open(void) — показать список.
close(void) — скрыть список.
isActive(void) — возвращает true если список активен (не скрыт).
get([String] key) — получить свойство экземпляра MSelectDBox (в том числе параметры конструктора)
set([String] key, [Any] value) — обновить, устанавить новое свойство экземпляра MSelectDBox
- Группы
- README.MD