Подтвердить что ты не робот

Выбранная ширина урожая увеличилась динамически

Как у вас есть выпадающее меню pickhq Chosen с динамическим стилем ширины?

По умолчанию он имеет фиксированную ширину, и если вы попытаетесь изменить его с помощью CSS, у вас будет несколько проблем, чтобы достичь хорошего результата.

4b9b3361

Ответ 1

Я просто хочу поделиться своим решением о том, как изменить размер выбранной ширины выпадающего экрана при изменении размера экрана:

Во-первых, вы должны добавить этот стиль в свой css:

#form_paciente{
    width: 100% !important;
}

Где * # form_paciente * - ваш идентификатор выбора.

После этого добавьте этот script в свой вид:

window.addEventListener("resize", function() {
    $('.chzn-container').innerWidth($('#selecciona_paciente_estadisticas_form').innerWidth());
    $('.chzn-search input').innerWidth($('#selecciona_paciente_estadisticas_form').innerWidth()-12);
    $('.chzn-drop').innerWidth($('#selecciona_paciente_estadisticas_form').innerWidth()-2);  
}, false);

В этом случае * # selecciona_paciente_estadisticas_form * является родительским идентификатором формы * # form_paciente *

Что все!

Ответ 2

Этот блог рекомендует следующее:

$("select").chosen({ width: '100%' }); // width in px, %, em, etc

Ответ 3

этот работал для меня, даже с несколькими полями выбора на экране:

$(document).ready(function(){      
   resizeChosen();
   jQuery(window).on('resize', resizeChosen);
});

function resizeChosen() {
   $(".chosen-container").each(function() {
       $(this).attr('style', 'width: 100%');
   });          
}

Ответ 4

Хотя частично упомянуто выше, я хотел бы указать на следующее решение:

.chosen-container {
    width: 100% !important;
}

Таким образом, ваш выбранный виджет будет всегда на 100%, и соответственно измените размер. Если вам понадобится какая-то другая ширина, измените процент или инкапсулируйте сам выбор с помощью другого элемента и вместо этого установите ширину этого элемента.

Ответ 5

У меня была отзывчивая форма, в которой было много правил CSS с медиа-запросами, !important и т.д., и он использовал выбранный вариант с наследованием класса. При изменении размера часто возникали конфликты между выбранным и родительским css, и все могло бы сломаться. Я придумал простое решение, которое сработало для меня: воссоздайте выбранный dom при каждом изменении размера окна:

jQuery(document).ready(function() {
        doResize();
        jQuery(window).on('resize', doResize);
});


function doResize() {
     // Parent website code, that would also reorganize select elements on the page
    jQuery("select.my-select").removeAttr("style"); // Remove display:none style added by chosen
    jQuery("select.my-select").removeClass("chzn-done"); // Remove chzn-done class added by chosen

    jQuery(".chzn-container").remove();
    jQuery("select.my-select").chosen({
                 width: '100%',
                 disable_search_threshold: 10,
                 inherit_select_classes : true
               });
}

Ответ 6

Основываясь на ответе @MSánchez, я написал следующее более общее, не обращаясь к каким-либо идентификаторам:

function processChosenContainer(myme) {
    myme.innerWidth(myme.parent().innerWidth() - 30);
}

function processChosenSearch(myme) {
    myme.innerWidth(myme.parent().parent().parent().innerWidth() - 13);
}

function processChosenDrop(myme) {
    myme.innerWidth(myme.parent().parent().innerWidth() - 32);
}

window.addEventListener("resize", function () {
    //******Adjust Container Width********/
    var myObj = $('.chosen-container');
    myObj.each(function () {
        processChosenContainer($(this));
    });
    //******Adjust input search Width********/
    var myObj2 = $('.chosen-search input');
    myObj2.each(function () {
        processChosenSearch($(this));
    });
    //******Adjust drop Width********/
    var myObj3 = $('.chosen-drop');
    myObj3.each(function () {
        processChosenDrop($(this));
    });
}, false);

Также добавьте к элементу select "selected-select-responsive", который выглядит следующим образом:

.chosen-select-responsive {
width: 100% !important;
}

Опять же, это только наращивание ответов MSánchez! Thnx

Ответ 7

Просто используйте ширину в процентах в одинарных кавычках:

<select chosen width="'100%'" ... ></select>

Отзывчивый, выбранный с использованием этой техники, можно увидеть здесь: http://plnkr.co/edit/RMAe8c?p=preview

Ответ 8

Вот простой, почему я это сделал.

JS:

// Create Chosen Select Menus
setUpSelectMenus();

// Reset Chosen Select Menus when window changes size
window.addEventListener( "resize", function() { setUpSelectMenus(); } );

/**
 * Settings for Default Chosen Select Menus
 */
function setUpSelectMenus(){

    $( '.chosen-select' )
        .chosen( "destroy" ) // Need this to make responsive
        .chosen(
            {
                allow_single_deselect   : true,
                disable_search_threshold: 10
            }
        );
}

Ответ 9

Способ, которым я пользуюсь, заключается в том, чтобы использовать attribute_select_class.

HTML

<select class="input-xxlarge" />

JS

jQuery("[data-chosen]").chosen({
  inherit_select_classes : true
});

CSS

.input-xxlarge {
  width:530px;
  max-width: 100%;
}

Ответ 10

Для меня это действительно так:

function resizeChosen() {
    var chosen = $("#dropdown_chosen");
    var max = chosen.parent().width();
    var currentWidth = chosen.width();
    var now = currentWidth + 20 / 100 * currentWidth;

    if (now <= max) {
        $("#dropdown_chosen").attr('style', "width: " + now + "px");
    }
}

и внутри document.ready

dropdown.chosen().change(function() {
    resizeChosen();
});

где выпадающее меню является идентификатором раскрывающегося списка. Вы также можете установить уменьшение ширины при событии изменения. #dropdown_chosen создается следующим образом:

- выпадающий идентификатор append _chosen