Giter Club home page Giter Club logo

ikselect's People

Contributors

bladeofsteel avatar igor10k avatar mkorzilov avatar olegatro avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

ikselect's Issues

Баг с настройками высоты dd

Пример: http://jsfiddle.net/mh7Y9/

Пояснение:

Есть необходимость показыватьселект меню только по клику.
Оборачиваю select в div с классом display:none. По клику на span.show диву присваивается свойство display:block;
При этом у выпадающего списка с опциями сбрасывается дефолтное значение height:200px, а вместо него выставляется height:auto.

Sync with original select's changes

Hello, thanks for nice plugin.

Problem: fake and original selects don't synchronize properly when original changed programmatically.
Case: change original select programmatically (E.g.: selectElement.selectedIndex = 2).

In this case ikSelect doesn't update itself. And there is no method to do this manually, something like "sync" or "refresh".

I've found a workaround, but it's haky a little bit:

$('select.mySelect').ikSelect('showDropdown').ikSelect('hideDropdown');

So it's looks like there is two options:

  1. make an auto synchronization (didn't investigate yet), or
  2. add a public method to synchronize fake and original selects.

Проблема в Ipad

не выскакивает стандартный select в Ipad при клике на стилизованный

Изменение окна браузера

Если selec открыт и изменить, например, ширину окна браузера, то selec оказывается не на своём месте.
Можно либо скрывать, либо с помощью debounce повесить событие resize и переопределять положение.

Некоректное работа в Firefox при включенном фильтре.

Если включена опция filter, то при клике вне выпадающего списка (для отмены выбора и закрытия списка) список закрывается, но вариант все равно выбирается, при этом визуально это становится видно только при следующем клике по списку. Воспроизводилось в Firefox (34.0.5).

Размеры стандартного контрола в мобильном браузере

Я начал внедрять Вам контрол у себя на сайте и столкнулся с несколькими проблемами.

Выскажу свои соображения.
Ширина стандартного контрола в мобильном браузере должна равняться 100% иначе получается что в некоторых случаях мы можем вызывать переопределенное меню (Когда промахиваемся мимо)
ну или...
if ($.browser.mobile) {
select.css({
opacity: 0,
left: 0,
height: fakeSelect.height(),
width: fakeSelect.width() /* Этого сейчас нет */
});
}

И второй момент...
высота стандартного контрола может не изменяться правильно при задании в вышеуказанном блоке height если не определены другие стили для select, например
.ik_select select {
border: 1px solid transparent; /* Помогает при установке высоты :) */
}

И еще одно... хотелось бы и для для обычного браузера оставлять возможность использования только самого селекта, без выпадающего меню.

Перезагрузка ikSelect

Здравствуйте. Передо мной встала задача обновить option'ы, если быть точнее заменить их полностью.
Как делаю я:

  1. аякс-запрос на сервер
  2. в результате ответа от сервера в json массиве я формирую текстовую переменную с обновлёнными option (list = "text")
  3. заменяю содержимое старого селекта: $('select').html(list);
  4. делаю $('select').ikSelect()

В результате данных махинаций содержимое исходного селекта меняется, но ikSelect ничего не пересобирает. В результате видимы старые данные, но отправляются на сервер обновлённые.

Хотелось бы чтобы ikSelect обновил данные.

P.S. Игрался с detach и redraw. Ничего не помогает

onChange ?

Привет!

    $(".bid_select").ikSelect({
        customClass: "bid_select",
        ddCustomClass: "bid_select",
        autoWidth: true
    });

    $('.bid_select').change(function() {
        console.log(2);

    });

2 раза срабатывает

fatal error in mobile browsers

--- jquery.ikSelect.js 2013-04-15 18:32:27.000000000 +0300
+++ jquery.ikSelect.js.fixed 2013-05-31 14:29:14.940059118 +0300
@@ -394,7 +394,7 @@
}
}

  •                   if (ikselect.options.filter) {
    
  •                   if (ikselect.options.filter && ! $.browser.mobile) {
                            filter.show().outerWidth(ikselect.filterWrap.width());
                    }
    

Класс для открытого селекта

Иногда бывает необходимо задать какой-то стиль для ссылки (.ik_select_link), когда селект раскрыт (стрелочку там развернуть, или ещё что). В связи с этим, было бы здорово добавлять какой-то класс для .ik_select (например «.ik_select_opened») в функции show_block() и убирать его в hide_block() соответственно.

Может кому пригодится, сейчас можно решить вот таким некрасивым костылём:

$(function(){
    $('select').ikSelect();

    var $body = $(body);

    //При клике по ссылкам-селектам
    $body.on('click.ikSelect', '.ik_select_link', function(){
        //Родитель
        var $select = $(this).parents('.ik_select:first');

        //Если он не заблокирован и не открыт
        if(!$select.data('ik_select_disabled') && !$select.hasClass('ik_select_opened')){
            //Закроем все открытые (т.к. за раз открывается только один)
            $('.ik_select.ik_select_opened').removeClass('ik_select_opened');
            //Укажем, что он открыт
            $select.addClass('ik_select_opened');
        }
    });

    //Убирание откраывающего класса для селектов
    $body.on('click.ikSelect', function(event){
        var $target = $(event.target);

        //Если произошёл клик по одному из пунктов выпадающего списка
        if ($target.parents('.ik_select_block').length > 0 ||
            //Или куда-нибудь по любому другому месту, кроме самого селекта
            ($('.ik_select_block:visible').length > 0 && $target.parents('.ik_select').length == 0)
        ){
            //Убираем соответствующий класс у открытого селектора
            $('.ik_select.ik_select_opened').removeClass('ik_select_opened');
        }
    });
});

amd module

Привет, как насчет включить поддержку amd модуля?
На работе часто используем Ваш плагин, а так же используем require js. Было бы круто, если бы была поддержка из коробки.

Contributing

Привет, некоторые соображения по поддержке:

  • package.json
  • bower.json
  • jshint
  • ci (travis-ci ?)
  • testing
  • отделить исходники от продакшена(в последнее время часто вижу структуру, dist и src, но тут, наверное, каждый сам решает)

С тестами не работал, но было бы интересно попробовать, если решите завести.

Могу потихоньку добавлять.

Фильтр и регистр символов

Доброго времени суток.

На демо-страничке (http://igor10k.github.io/ikSelect/) взгляните на последний пример с фильтром. Если вводить название страны с маленькой буквы, то все хорошо. Но если с большой - то "Nothing found".

Это нелогично, хотя бы потому, что в самом списке названия начинаются с заглавных букв.

Предложение по селектику

в функцию _changeSelectedHtml из _changeSelected передаем "e"
и добавляем
$(element).find('option').removeAttr('selected');
$(element).find('option[value="'+e.data('value')+'"]').attr("selected", true);

CDN

Привет, думаю стоит добавить библиотеку в какой нибудь cdn ресурс для библиотек?
Например, cdnjs или jsdelivr

Up/Down arrows bug in Firefox

Bug:

  1. Use "Tab" key to focus in ikSelect
  2. Press "Up/Down" arrows to choose some value
  3. Press "Tab" again to commit changes and go to next input
    Bug: Selected value is user value +/-1 position.

Software:
WIndows7 x32; Firefox 26.0

Possible solution:
This patch is worked for me.

// sync selected option in the fake select with the original one
_syncFakeOption: function () {
    if(!$.browser.mozilla || this.$dropdown.is(':visible'))//add this to solve this bug
        this.el.selectedIndex = this.hoverIndex;
},

Интеграция с twitter-bootstrap

Здравствуйте. Я использую twitter-bootstrap для своего проекта, но встроенного функционала выпадающего списка мне не хватает, поэтому решил использовать ваш плагин. Однако, синтаксис отличается, и из-за этого появляются проблемы

Оформление кода html кода для ikSelect:

<select id="selector">
    <option value="value1">One</option>
    <option value="value2" selected="selected">Two</option>
    <option value="value3">Three</option>
</select>

Оформление кода html кода, синтаксис и генерируемый html код у twitter-bootstrap один и тот же, html просто "оживляется" javascript

<div class="btn-group">
    <a class="btn dropdown-toggle" data-toggle="dropdown" href="#">
        <span>one</span>
        <span class="caret"></span>
    </a>
    <ul class="dropdown-menu">
        <li><a tabindex="-1" href="#">one</a></li>
        <li><a tabindex="-1" href="#">two</a></li>
        <li><a tabindex="-1" href="#">three</a></li>
    </ul>
</div>

Сиснтаксис ikSelect:

<div class="ik_select_link">
    <span class="ik_select_link_text"></span>
</div>
<div class="ik_select_block">
    <div class="ik_select_list"></div>
</div>

Генерируемый html код:
ikSelect

<div class="ik_select" style="width: 70px;">
    <div class="ik_select_link"><span class="ik_select_link_text">One</span></div>
    <select id="selector" style="position: absolute; margin: 0px; padding: 0px; left: -9999px; top: 0px;" class="ik_select_opened">
        <option value="value1">One</option>
        <option value="value2" selected="selected">Two</option>
        <option value="value3">Three</option>
    </select>

    <div class="ik_select_block" style="display: none; width: 70px;">
        <div class="ik_select_list" style="position: static;">
            <div class="ik_select_list_inner" style="width: 70px; float: none; height: auto;">
                <ul style="width: 70px;">
                    <li class="ik_select_has_events ik_select_hover ik_select_active">
                        <span class="ik_select_option" title="value1">One</span></li>
                    <li class="ik_select_has_events"><span class="ik_select_option" title="value2">Two</span></li>
                    <li class="ik_select_has_events"><span class="ik_select_option" title="value3">Three</span></li>
                </ul>
            </div>
        </div>
    </div>
</div>

что сильно отличается от твиттерского шаблона.

Если использовать syntax таким образом

syntax: '<div class="btn-group"><a class="ik_select_link btn dropdown-toggle" data-toggle="dropdown" href="#"><span class="ik_select_link_text"></span><span class="caret"></span></a><div class="ik_select_block"><div class="ik_select_list"></div></div></div>'
<div class="btn-group">
    <a class="ik_select_link btn dropdown-toggle" data-toggle="dropdown" href="#">
        <span class="ik_select_link_text"></span>
        <span class="caret"></span>
    </a>

    <div class="ik_select_block">
        <div class="ik_select_list"></div>
    </div>
</div>

то генерируемый код становится таким

<div class="ik_select" style="width: 70px;">
    <div class="btn-group">
        <a class="ik_select_link btn dropdown-toggle" data-toggle="dropdown" href="#">
            <span class="ik_select_link_text">One</span>
            <span class="caret"></span></a>
    </div>
    <select id="Selector" style="position: absolute; margin: 0px; padding: 0px; left: -9999px; top: 0px;" class="ik_select_opened">
        <option value="value1">One</option>
        <option value="value2" selected="selected">Two</option>
        <option value="value3">Three</option>
    </select>

    <div class="ik_select_block" style="display: none; width: 70px;">
        <div class="ik_select_list" style="position: static;">
            <div class="ik_select_list_inner" style="width: 70px; float: none; height: auto;">
                <ul style="width: 70px;">
                    <li class="ik_select_has_events"><span class="ik_select_option" title="value1">One</span></li>
                    <li class="ik_select_has_events"><span class="ik_select_option" title="value2">Two</span></li>
                    <li class="ik_select_has_events ik_select_hover ik_select_active">
                        <span class="ik_select_option" title="value3">Three</span></li>
                </ul>
            </div>
        </div>
    </div>
</div>

что уже ближе к оригиналу, но все равно "не айс"

можно ли добавить специальный синтаксис, включаемый по параметру twitter-bootstrap:true?

почитать про twitter-bootstrap dropdown можно здесь
http://twitter.github.com/bootstrap/components.html#dropdowns
http://twitter.github.com/bootstrap/javascript.html#dropdowns

Contributing & editorconfig

Собственно, хотелось узнать, нет ли желания добавить editorconfig в репозиторий?
А то свои настройки сбивают Ваше оформление(пробелы/табуляция). Приходилось подгонять.

проблема с optgroup

Обнаружил что невозможно сделать смесь из простых Option и Oprtgroup, что вроде позволяет спецификация

например
< select name="f2" id="f2" >
< option value="1">Опция1< /option>
< optgroup label="Блок опций">
< option value="21">Опция 2-1< /option>
< option value="22">Опция 2-2< /option>
< option value="23">Опция 2-3< /option>
< /optgroup>
< option value="3">Опция3< /option>
< /select>

ikSelect выдает только содержимое группы, строки 1и 3 (т.е. без группы) исчезают :(
*сорри на знаю как тут код вставлять чтоб было нормально :( Но, думаю ,суть ясна )

Project still alive?

Привет, интересует, жив ли еще проект, или посоветуете альтернативу?

lazy loading

  1. При большом количестве данных, фильтр (автодополнение) работает медленно (время отклика более 5 секунд), хотели использовать селект для поиска по списку городов (2500 значений)

  2. при большом количестве данных страница загружается дольше, было бы неплохо при прокрутке списка динамически подгружать список объектов с сервера. Пример: http://demos.telerik.com/aspnet-ajax/combobox/examples/populatingwithdata/autocompletesql/defaultcs.aspx

Интеграция с Fancybox 2.x

Fancybox - очень популярные всплывашки у фронтендщиков. Особенно, они любят в эти всплывашки засовывать формы. Обидно, что во всплывашках ikselect дико глючит ( left и top у .ik_select_block_up )

Соль в том, что ikselect ( также как и fancybox ) суёт .ik_select_block_up сразу потомком body ( у fancybox - это .fancybox-wrap ). Может попробовать сделать, чтобы ikselect детектил открытый fancybox и, если находил, то правильно считал top и left.

Start from ie9

Я к сожалению плохо разбираюсь в особенностях кода для ие, но интересно. Уменьшился ба размер плагина, если оставить поддержку с ie9 ?

multiple attribute

is there any way to use 'multiple' attribute in your plugin?

sorry, found the answer

Mobile detection in jquery > 1.9

Hello,
I have noticed that there is no native control on mobiles; I use jQuery 1.11.1 and there is no $.browser variable. I found code what set this var from navigator.userAgent:

if (! $.browser) {
    ...
}

But there is no $.browser.mobile property which is checked in init function.
I think, it should be some code for detect mobile, like in previouse version:

$.browser.mobile = /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);

Есть onShow, но нету onClose

Без этого API неполноценно.
Например можно что-то сделать какое-то действие после открытия select, но нельзя убрать результаты этого действия после закрытия select.

Disabled option

Disabled option does not supported properly, can be selected

Remove jquery dependency

Не думаете о том, что бы в будущем убрать jquery зависимость? Я думаю это было бы правильным шагом в развитии плагина.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.