jQuery Form Styler - плагин для стилизации селектов, чекбоксов, радиокнопок, файловых и числовых полей
![jQuery Form Styler — плагин для стилизации элементов HTML-форм (input[type=checkbox], input[type=radio], input[type=file], input[type=number], select)](https://dimox.name/wp-content/themes/dimox.name/cache/d0/6a66efe39766dd0_150x100.png)
Данный плагин позволяет стилизовать с помощью CSS следующие HTML-элементы: флажок <input type="checkbox">; переключатель <input type="radio">; поле для выбора файла <input type="file">. поле для ввода чисел <input type="number">. раскрывающийся список <select>; Демонстрация работы плагина Живые примеры можно посмотреть на отдельной странице. Стоит заметить, что при ...
Комментарии (2 614)
Недавно столкнулся с проблемой: часть страницы обновляется через ajax. Обновленные селекты без стилизации.
Вроде понятно, что нужно вызвать метод. styler () повторно. Но вот как отловить момент обновления элемента. Сам механизм обновления через ajax заложен в CMS. Туда лезть нехорошо.
В результате нашел довольно таки простое решение — прописать вызов метода в глобальных настройках ajax запросов:
Может кому пригодится…
Спасибо, пригодилось)
Спасибо, пригодилось!
Самое интересное, что пробовал этот код вставлять в конце ajax запроса — не работало, а заработало, если в начале.
Нут. е. например:
1. Так не работало
onclick='my_function (); jQuery. ajaxSetup ({complete: function (){jQuery («select»).styler (); }}); '
2. Так заработало
onclick='jQuery.ajaxSetup ({complete: function (){jQuery («select»).styler (); }}); my_function ();'
Если в коде, то соответственно, тоже в начале
function my_function ()
{
jQuery.ajaxSetup ({complete: function (){jQuery («select»).styler (); }});
… далее код
Спасибо, это до сих пор работает, правда я другую библиотеку использовала для селектов
Не понятно, для чего ипользовать лишие скрипты, если все это можно сделать в CSS с помощью псевдоэлементов. Правда, в старых браузерах работать не будет.
Не спорю все будет красиво и не так грузить браузер, но грошь цена верстке которая сейчас фигово смотрится в ИЕ8, увы, но такие реалии… к примеру Themeforrest уже отказался от поддержки ие8, а вот наши отечественные клиенты по прежнему считают что верстка под ие 8 показатель мастерства верстальщика и студии в целом отчасти с ними согласен. Бывают даже весельчаки которые просят ие 6))
П.С. Автор спасибо за хороший плагин, очень кстати, все просто и доступно
Чтобы не быть голословным! Я сделал украшения чекбоксов и радио с помощью псевдоэлементов в CSS. Идея не моя, где-то видел, уже не помню. Делается так.
Заключаем input в div и добавляем label:
Далее в css прописываем:
Я использовал FontAwesome для отмеченных чекбоксов, он работает только с: before
Вот собственно и все. Стили, конечно, нужно поправить под конкретные нужды.
Самое главное, нет проблем с обработкой onclick.
Результат можно посмотреть у меня на сайте: http://pushpizza.ru/24-japan-menu
PS В старых браузерах не работает, поэтому надо прописать в стилях для них не показывать новые чекбоксы, то есть сделать видимыми нативные.
Использую плагин для стилизации select. При перезагрузке текущей страницы, select сохраняет выбранное ранее состояние. Как сделать чтобы он при перезагрузке страницы выбирал, как и положено, первый?
Без включенного плагина то же самое или нет?
Прошу прощения, данное поведение есть только в Firefox, и к плагину никакого отношения не имеет. Раз уж я тут написал, никто не знает как это победить?
Визуально не сбрасывает настройки формы, хотя должен, юзать Api?
Пример можете показать?
Выложил новую версию плагина. Будет интересна тем, кто хотел поддержку плагинов валидации. Вот живой пример с использованием плагина jQuery Validation.
В связи с этим в инструкциях по подключению моего плагина добавил новый пункт, прошу обратить на него внимание.
Плагин замечательный, спасибо!
Только у меня не получается применить его для селектов. Вот фрагмент кода:
С кнопкой, например, все получилось. Что я делаю не так?
Не хватает доктайпа:
Доктайп был, забыл его сюда написать. Поменял на ваш — не помогло.
У меня работает. Попробуйте поменять версию jQueryна 1.9.1.
Все работает. Просто я не выспался. Спасибо!
Попутно предложение по развитию: добавить оформление для
Извиняюсь, забыл тэг
Понравился скрипт! Один нюанс. Было бы замечательно если selectbox обладал поиском по содержимому, так же как chosen. Надеюсь вы добавите функцию поиска! =)
Здравствуй, не пойму где засада, сделал чекбокс «Выбрать все», но триггер работает лишь однажды на включение, в остальном только выключает все чекбоксы
http://jsfiddle.net/57u3K/1/
Поменяйте
attr
наprop
.Спасибо! Ночью перебирал и
prop
иattr
в разных позах, но что-то не срослось)Выложил новую версию плагина. Добавил поиск в одиночном селекте.
Во валидация заработала) теперь вообще нормуль. Спасибо.
Планируется ли доработка мультиселекта а-ля Bootstrap Multiselect или что-то подобное?
Ничего менять в мультиселекте не планирую.
В версии плагина 1.4.6 не работает переключение радиокнопок в группе. После долгих мучений оказалось что если отсутствует обертка form, то кнопки не выключаются. В ранних версиях плагина было все хорошо :)
Логично же, что элемент формы должен находиться в теге form.
Чаще всего да. Однако допускается использовать любые элементы вне тэга form кроме
. Иногда это надо, например для пользовательского интерфейса. По крайней мере это требование надо отметить в примечаниях. Еще из пожеланий при неуказанной ширине селекта не учитывается ширина триггера-стрелки.
А вообще спасибо за плагин очень классный!
Любой элемент можно использовать вне формы:
Тут уже как посмотреть, но в вашем случаи можно просто допилить скрипт под конкретный сайт:
после
добавить:
А
заменить на:
Ну и при инициализации скрипта указывать нужный селектор
Она и не должна влиять на ширину селекта. Такое же поведение и у нестилизованного селекта.
Установил плагин, но почему-то он работает только на поле «input type="file»
Остальные поля не оформляются. В чём может быть проблема.
Что-то неправильно делаете. Экстрасенсов тут нет.
Форма:
Плагин:
Читайте внимательно вначале статьи, что стилизует данный плагин. Из этого списка в вашей форме есть только input[file], все верно стилизовалось.
А текстовые поля и кнопки стилизуются путем добавления вручную класса
.styler
. Плагином они не стилизуются, тут чистый CSS.Подскажите, что нужно подправить, что бы в селекте искать с первой буквы (т.е. если пользователь нажимает M, то показываются только варианты на букву M). Сейчас ищет все вхождения. Спасибо.
Не знаю, как это сделать. Плохо разбираюсь в регулярных выражениях.
Куда хоть копать, где поиск?
Вот строка с регуляркой для поиска:
Может кому пригодится, вот решение:
А как плагин заставить работать с fancybox?
Fancybox открывается, а select не стилизуется… Видимо стилизацию надо запускать только после открытия окна?
Если до открытия окна селекта не было на странице, то да.
Имею проблему по ширине select. Она определяется всегда уже по ширине, чем требуется. То есть надпись режется (class jq-selectbox__select-text). Пришлось закоментировать в jquery.formstyler.js строку 376
Ширина определяется почти корректно и есть много глюков. Помогите выйти из тупика. Заранее благодарен.
Ширина псевдоселекта по умолчанию ставится равной ширине оригинального селекта.
У селекта ширина треугольничка (не знаю как называется) намного меньше чем в псевдоселекте, поэтому глюк. Как можно сделать чтобы ширина псевдоселекта равнялась ширине селекта плюс фиксированное число пикселей (допустим +20px). Буду благодарен за помощь.
Замените:
на:
Спасибо! Все прекрасно работает.
Подскажите, пожалуйста, как быть.
В коде файла jquery.formstyler.js — на чекбоксе есть событие onClick, например:
checkbox. click (function () {
if (!checkbox.is ('.disabled')) {
if (el.is (':checked')) {
el. prop ('checked', false);
checkbox. removeClass ('checked');
} else {
el. prop ('checked', true);
checkbox. addClass ('checked');
}
А у меня в чекбоксе прямо прописано, что на onClick происходит некое событие:
Этот клик не срабатывает.
Какой можно найти выход из этой ситуации?
Это клик по псевдоэлементу, а не оригинальному чекбоксу.
Поменяйте у себя onClick на onChange.
Спасибо! Получилось.
В IE8 и ниже, виснет страница с одиночным select. Даже демо-страница «Одиночные селекты» dimox.github.io/jQueryFormStyler/demo/#select. Все остальные элементы работают.