Yii2:如何禁用或只读Select2小部件?

时间:2019-06-03 16:41:14

标签: php html yii2 jquery-select2 disabled-input

我使用的是基于select2.github.io的小部件,我需要将其设为只读,以便用户可以看到默认的选择选项,但无法更改,并且我认为该小部件没有此选项。 / p>

是否有适用于所有Select2小部件的通用解决方案?

$form->field($model, 'id_color')->widget(Select2::classname(), [
    'items' => ['1' => 'blue', '2' => 'red', '3' => 'yellow']
])

4 个答案:

答案 0 :(得分:2)

好吧,有一个名称为disabled的选项可以作为truefalse传递,从而呈现禁用的选择或启用的状态。

<?php echo $form->field($model, 'id_color')->widget(Select2::classname(), [
        'items' => ['1' => 'blue', '2' => 'red', '3' => 'yellow']
        'pluginOptions' => [
            'disabled' => true
        ]
    ]);
?>

BUT ,在使用前,请注意,禁用的输入不会与表单一起作为post数组的一部分以及readonly属性`{{3} }。因此,您可能必须采取一种变通方法,为禁用的选择添加一个隐藏的输入,其中包含禁用的选择2的当前所选选项的ID。

所以将以下内容添加到您的表单中,您就可以开始使用

<?php echo $form->field($model, 'id_color')->hiddenInput() ?>

答案 1 :(得分:1)

使用pluginEvents禁用。

<h:outputText value="#{labels.aktiv}"/>
<p:triStateCheckbox value="#{handler.readyFlag}"
    converter="triStateConverter">
        <p:ajax event="change" update="workflowEventTbl"
                listener="#{handler.createDataModel}"
                partialSubmit="true"/>
</p:triStateCheckbox> 

答案 2 :(得分:0)

如果愿意,请尝试CSS方法。

<?= $form->field($model, 'id_color')->widget(Select2::classname(), [
    'data' => ['1' => 'blue', '2' => 'red', '3' => 'yellow'],
    'readonly' => true,
]); ?>


<style type="text/css">
select[readonly].select2-hidden-accessible + .select2-container {
  pointer-events: none;
  touch-action: none;

  .select2-selection {
    background: #eee;
    box-shadow: none;
  }

  .select2-selection__arrow,
  .select2-selection__clear {
    display: none;
  }
}
</style>

答案 3 :(得分:0)

对于 Select2,您可以将属性 'readonly' 用于 'options'

'options' => [
    'readonly' => true
],

例如

echo $form->field($model, 'sazba')->widget(Select2::classname(), [
    'data' => $listData,
    'options' => [
        'placeholder' => '--- Vyberte ---',
        'multiple' => false,
        'class' => 'hide',
        'id' => 'all_sazba',
        'value' => $model->sazba,
        'readonly' => true
    ],
    'pluginOptions' => [
        'allowClear' => true
    ],
]);