Виджет Selectmenuверсия добавлена: 1.11
Описание: Дублирует и расширяет функциональность стандартного HTML-элемента select, чтобы преодолеть ограничения стандартного элемента управления.
Selectmenu преобразует элемент <select> в стилизуемый и настраиваемый элемент управления. Виджет действует как прокси к исходному <select>; поэтому состояние исходного элемента сохраняется для отправки формы и сериализации.
Selectmenu поддерживает <optgroup> элементы и пользовательскую разметку для отображения таких представлений, как несколько строк. Виджет <select> и его параметры могут быть отключены добавлением атрибута disabled.
Примечание: Поддержка accesskey для пользовательских элементов в браузерах крайне ограничена. Поэтому, если атрибут accesskey присутствует в элементе <select>, он не будет работать с пользовательским selectmenu. Если атрибут accesskey присутствует в любом из элементов <option>, использование сочетания клавиш может привести к рассогласованию между исходным и пользовательским элементом. Однако большинство браузеров не поддерживают accesskey в элементах <option>.
Взаимодействие с клавиатурой
При открытом меню доступны следующие команды:
-
UP/LEFT: Перемещение фокуса на предыдущий элемент. -
DOWN/RIGHT: Перемещение фокуса на следующий элемент. -
END/PAGE DOWN: Перемещение фокуса на последний элемент. -
HOME/PAGE UP: Перемещение фокуса на первый элемент. -
ESCAPE: Закрытие меню. -
ENTER/SPACE: Выбор выделенного элемента и закрытие меню. -
ALT/OPTION+UP/DOWN: Переключение видимости меню.
При закрытом меню доступны следующие команды:
-
UP/LEFT: Выбор предыдущего элемента. -
DOWN/RIGHT: Выбор следующего элемента. -
END/PAGE DOWN: Выбор последнего элемента. -
HOME/PAGE UP: Выбор первого элемента. -
ALT/OPTION+UP/DOWN: Переключение видимости меню. -
SPACE: Открытие меню.
Стилевые решения
Виджет selectmenu использует фреймворк CSS jQuery UI CSS framework для настройки внешнего вида. Если требуется настройка стилей для selectmenu, можно использовать следующие имена CSS-классов для переопределения или как ключи для classes параметра:
-
ui-selectmenu-button: Элемент, подобный кнопке, заменяющий стандартный элемент selectmenu на странице. Имеет классui-selectmenu-button-closedпри закрытии, и классui-selectmenu-button-openпри открытии.-
ui-selectmenu-text: Элемент span, представляющий текстовую часть элемента кнопки. -
ui-selectmenu-icon: Иконка внутри кнопки selectmenu.
-
-
ui-selectmenu-menu: Обёрточный элемент вокруг меню, используемый для отображения вариантов пользователю (не само меню). При открытии меню добавляется классui-selectmenu-open.-
ui-selectmenu-optgroup: Один из элементов, имитирующих элементы<optgroup>из стандартных select.
-
Зависимости
Дополнительные заметки:
- Для работы данного виджета необходим функциональный CSS. Если вы создаёте собственную тему, используйте файл CSS виджета в качестве отправной точки.
Параметры
appendTo
null null, проверяются родительские элементы <select> на наличие класса ui-front. Если такой элемент найден, список будет добавлен к нему. Независимо от значения, если элемент не найден, список будет добавлен к телу документа.Инициализируйте selectmenu с указанием параметра appendTo.
$( ".selector" ).selectmenu({
appendTo: "#someElem"
}); Получите или установите параметр appendTo, после инициализации.
// Getter var appendTo = $( ".selector" ).selectmenu( "option", "appendTo" ); // Setter $( ".selector" ).selectmenu( "option", "appendTo", "#someElem" );
classes
{
"ui-selectmenu-button-closed": "ui-corner-all",
"ui-selectmenu-button-open": "ui-corner-top",
} Укажите дополнительные классы, которые нужно добавить к элементам виджета. Любой из классов, указанных в разделе Стилевые решения, можно использовать как ключи для переопределения их значения. Подробнее об этом параметре см. статью о параметре classes.
Инициализируйте selectmenu с указанием параметра classes, изменив стили для класса ui-selectmenu-menu.
$( ".selector" ).selectmenu({
classes: {
"ui-selectmenu-menu": "highlight"
}
}); Получите или установите свойство параметра classes, после инициализации, здесь читая и изменяя стили для класса ui-selectmenu-menu.
// Getter var themeClass = $( ".selector" ).selectmenu( "option", "classes.ui-selectmenu-menu" ); // Setter $( ".selector" ).selectmenu( "option", "classes.ui-selectmenu-menu", "highlight" );
disabled
false true.Инициализируйте selectmenu с указанием параметра disabled.
$( ".selector" ).selectmenu({
disabled: true
}); Получите или установите параметр disabled после инициализации.
// Getter var disabled = $( ".selector" ).selectmenu( "option", "disabled" ); // Setter $( ".selector" ).selectmenu( "option", "disabled", true );
icons
{ button: "ui-icon-triangle-1-s" } - button (строка, по умолчанию: "ui-icon-triangle-1-s")
Инициализируйте selectmenu с указанием параметра icons.
$( ".selector" ).selectmenu({
icons: { button: "ui-icon-circle-triangle-s" }
}); Получите или установите параметр icons после инициализации.
// Getter
var icons = $( ".selector" ).selectmenu( "option", "icons" );
// Setter
$( ".selector" ).selectmenu( "option", "icons", { button: "ui-icon-circle-triangle-s" } ); position
{ my: "left top", at: "left bottom", collision: "none" } Инициализируйте selectmenu с указанием параметра position.
$( ".selector" ).selectmenu({
position: { my : "left+10 center", at: "right center" }
}); Получите или установите параметр position после инициализации.
// Getter
var position = $( ".selector" ).selectmenu( "option", "position" );
// Setter
$( ".selector" ).selectmenu( "option", "position", { my : "left+10 center", at: "right center" } ); width
false null, используется ширина исходного select. Если значение равно false, ширина не будет задаваться в стиле, что позволит задать ширину в таблице стилей.Инициализируйте selectmenu с указанием параметра width.
$( ".selector" ).selectmenu({
width: 200
}); Получите или установите параметр width после инициализации.
// Getter var width = $( ".selector" ).selectmenu( "option", "width" ); // Setter $( ".selector" ).selectmenu( "option", "width", 200 );