Skip to content
This repository was archived by the owner on Dec 27, 2021. It is now read-only.

Commit 1793a05

Browse files
committed
1.6.2
1 parent 7f653be commit 1793a05

File tree

2 files changed

+61
-42
lines changed

2 files changed

+61
-42
lines changed

jquery.formstyler.js

Lines changed: 29 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,11 @@
11
/*
2-
* jQuery Form Styler v1.6.1
2+
* jQuery Form Styler v1.6.2
33
* https://github.com/Dimox/jQueryFormStyler
44
*
55
* Copyright 2012-2014 Dimox (http://dimox.name/)
66
* Released under the MIT license.
77
*
8-
* Date: 2014.11.23
8+
* Date: 2015.02.21
99
*
1010
*/
1111

@@ -44,6 +44,9 @@
4444
return this.each(function() {
4545
var el = $(this);
4646

47+
var iOS = (navigator.userAgent.match(/(iPad|iPhone|iPod)/i) && !navigator.userAgent.match(/(Windows\sPhone)/i)) ? true : false;
48+
var Android = (navigator.userAgent.match(/Android/i) && !navigator.userAgent.match(/(Windows\sPhone)/i)) ? true : false;
49+
4750
function Attributes() {
4851
var id = '',
4952
title = '',
@@ -502,7 +505,6 @@
502505

503506
// если iOS, то не показываем выпадающий список,
504507
// т.к. отображается нативный и неизвестно, как его спрятать
505-
var iOS = navigator.userAgent.match(/(iPad|iPhone|iPod)/i) ? true : false;
506508
if (iOS) return;
507509

508510
// умное позиционирование
@@ -564,6 +566,12 @@
564566
selectbox.removeClass('dropup').addClass('dropdown');
565567
}
566568
}
569+
570+
// если выпадающий список выходит за правый край окна браузера,
571+
// то меняем позиционирование с левого на правое
572+
if (selectbox.offset().left + dropdown.outerWidth() > win.width()) {
573+
dropdown.css({left: 'auto', right: 0});
574+
}
567575
// конец умного позиционирования
568576

569577
$('div.jqselect').css({zIndex: (singleSelectzIndex - 1)}).removeClass('opened');
@@ -610,10 +618,14 @@
610618

611619
// прокручиваем до выбранного пункта при открытии списка
612620
if (li.filter('.selected').length) {
613-
// если нечетное количество видимых пунктов,
614-
// то высоту пункта делим пополам для последующего расчета
615-
if ( (ul.innerHeight() / liHeight) % 2 !== 0 ) liHeight = liHeight / 2;
616-
ul.scrollTop(ul.scrollTop() + li.filter('.selected').position().top - ul.innerHeight() / 2 + liHeight);
621+
if (el.val() === '') {
622+
ul.scrollTop(0);
623+
} else {
624+
// если нечетное количество видимых пунктов,
625+
// то высоту пункта делим пополам для последующего расчета
626+
if ( (ul.innerHeight() / liHeight) % 2 !== 0 ) liHeight = liHeight / 2;
627+
ul.scrollTop(ul.scrollTop() + li.filter('.selected').position().top - ul.innerHeight() / 2 + liHeight);
628+
}
617629
}
618630

619631
preventScrolling(ul);
@@ -679,11 +691,19 @@
679691
// изменение селекта с клавиатуры
680692
.on('keydown.styler keyup.styler', function(e) {
681693
var liHeight = li.data('li-height');
682-
divText.text(option.filter(':selected').text());
694+
if (el.val() === '') {
695+
divText.text(selectPlaceholder).addClass('placeholder');
696+
} else {
697+
divText.text(option.filter(':selected').text());
698+
}
683699
li.removeClass('selected sel').not('.optgroup').eq(el[0].selectedIndex).addClass('selected sel');
684700
// вверх, влево, Page Up, Home
685701
if (e.which == 38 || e.which == 37 || e.which == 33 || e.which == 36) {
686-
ul.scrollTop(ul.scrollTop() + li.filter('.selected').position().top);
702+
if (el.val() === '') {
703+
ul.scrollTop(0);
704+
} else {
705+
ul.scrollTop(ul.scrollTop() + li.filter('.selected').position().top);
706+
}
687707
}
688708
// вниз, вправо, Page Down, End
689709
if (e.which == 40 || e.which == 39 || e.which == 34 || e.which == 35) {
@@ -873,8 +893,6 @@
873893
// если Android или iOS, то мультиселект не стилизуем
874894
// причина для Android - в стилизованном селекте нет возможности выбрать несколько пунктов
875895
// причина для iOS - в стилизованном селекте неправильно отображаются выбранные пункты
876-
var Android = navigator.userAgent.match(/Android/i) ? true : false;
877-
var iOS = navigator.userAgent.match(/(iPad|iPhone|iPod)/i) ? true : false;
878896
if (Android || iOS) return;
879897

880898
doMultipleSelect();

0 commit comments

Comments
 (0)