@Paromon
Junior software developer

Как в select2 сделать что бы после выбора окно не закрывалось?

Доброго времени суток. Имеется вот такой select:
echo $form->field($modelForm, 'applicationId')->widget(\kartik\widgets\Select2::classname(), [
    'options' => [
        'placeholder' => 'All',
        'style' => "width:300px",
        'id' => 'applicationId',
        'multiple' => true,
    ],
    'initValueText' => $modelForm->selectedApplication,
    'pluginOptions' => [
        'width' => '460px',
        'allowClear' => true,
        'minimumInputLength' => 3,
        'ajax' => [
            'url' => $urlApplication,
            'dataType' => 'json',
            'delay' => 350,
            'data' => new \yii\web\JsExpression('function(term,page) {
                        var marketId=$("#marketId").select2("val");
                        var marketAccountId=$("#marketAccountId").select2("val");
                        var platformId=$("#platformId").select2("val");
                        if(typeof platformId !== "string" && platformId != null && platformId.length > 0){
                            platformId = platformId.join(",");
                        }
                        if(typeof marketAccountId !== "string" && marketAccountId != null && marketAccountId.length > 0){
                            marketAccountId = marketAccountId.join(",");
                        }
                        if(typeof marketId !== "string" && marketId != null && marketId.length > 0){
                            var market = marketId.join(":")
                        }
                        var search=term.term;
                        search=search.replace(/\'/g,"");
                        return {marketId:market,platformId:platformId,marketAccountId:marketAccountId,search:search};
                }'),
            'results' => new \yii\web\JsExpression('function(data,page) {return {results:data.results}; }'),
        ],
        'escapeMarkup' => new \yii\web\JsExpression('function (markup) { return markup; }'),
        'templateResult' => new \yii\web\JsExpression('format'),
        'templateSelection' => new \yii\web\JsExpression('function (city) { return city.text; }'),
    ],
]);

В JS если выполнить:
$("#applicationId").on("select2:select",  function (e) { $("#applicationId").select2("open") });
то оно после выбора закрывается, потом открывается, т.е. если был поиск то он сбрасывается. Как сделать так что бы после выбора select2 остался открытым и с поиском который был забит до этого?
  • Вопрос задан
  • 1898 просмотров
Решения вопроса 1
qonand
@qonand
Software Engineer
у плагина Select2 есть опция closeOnSelect отвечающая за нужный Вам функционал.
'pluginOptions' => [
 'closeOnSelect' => false
]


Более подробно можно почитать в официальной документации
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы