Просмотр поста

.
Onatolich

И последнее на сегодня: стилизация Select с мультивыбором.

jQuery плагин:

/*-------------------------------------------------------------------*/
/* Multiple selectbar */
/*-------------------------------------------------------------------*/

(function($){
  jQuery.fn.multiselect = function(){

    var e;

/*-------------------------------------------------------------------*/

    var handler = function(){
        e = $(this);
        var eName = e.attr('name').substring(0, (e.attr('name').length - 2));

        var i = 1;
        e.find('option').each(function(){ $(this).attr('oid', i); ++i; });
        e.attr('eid', 'oms-' + eName).hide();

        $('<section></section>').addClass('ois-multiselect').attr('sid', 'oms-' + eName).insertAfter(e);
        e.find('option').each(function(){
            $('<section></section>').addClass('ois-item').text($(this).text())
            .attr('oidms', $(this).attr('oid'))
            .appendTo($('section[sid=oms-' + eName + ']'));

            ($(this).attr('selected') != 'selected') || $('section[sid=oms-' + eName + '] section.ois-item[oidms=' + $(this).attr('oid') + ']').addClass('checked');
        });

        $('section[sid=oms-' + eName + ']').find('section.ois-item').bind('click', function(){
            $(this).toggleClass('checked');

            e.find('option[oid=' + $(this).attr('oidms') + ']').removeAttr('selected');
            if($(this).hasClass('checked'))
                e.find('option[oid=' + $(this).attr('oidms') + ']').attr('selected', 'selected');
        });
    }

/*-------------------------------------------------------------------*/

    return this.each(handler);
  }
})(jQuery);


CSS:
/* Контейнер */
.ois-multiselect{
  background: #fff;
  border: 1px solid #d6dfe8;
  color: #6890ba;
  display: inline-block;
  min-height: 160px; max-height: 205px;
  width: 190px;
  overflow: auto;
}

/* Отдельный вариант выбора */
.ois-multiselect .ois-item{
  border-bottom: 1px solid #fff;
  border-top: 1px solid #fff;
  cursor: pointer;
  font-family: Helvetica;
  font-size: 9pt;
  font-weight: bold;
  margin-top: -1px;
  padding: 3px 15px;
}
.ois-multiselect .ois-item:first-child{ margin-top: 2px; }
.ois-multiselect .ois-item:last-child{ margin-bottom: 2px; }

/* Вариант выбора с наведенным курсором */
.ois-multiselect .ois-item:hover{ background: #f0f0ff; }

/* Выбранный вариант */
.ois-multiselect .ois-item.checked{
  background: #eaeaff;
  border-color: #fff;
}


Как и предыдущий плагин этот не задевает основного функционала селектбара и работает при отключенном JS, более того вызывать его нет нужды, так как предыдущий плагин сам определит обычный это селектбар или с мультивыбором и сам вызовет этот плагин.
Прикрепленные файлы: