我正在使用Select2小部件:
<?php echo $form->field($model, 'id_person')->widget(
\common\widgets\Select2::classname(),
[
'items' => \yii\helpers\ArrayHelper::map(\app\models\Persons::find()->all(), 'id_person', 'name_person'),
'placeholder' => '',
'class' => 'form-control',
'options' => [
'id' => 'idPerson' // For jQuery.
]
]
)
?>
然后我使用jQuery禁用它,并在读取in this StackOverflow question时设置一个值:
function($) {
$("#idPerson").prop("disabled", true)
.select2('data', {id: 1, a_key: 'John'});
});
它已正确禁用Select2,但是未设置该值,因此控制器未收到该值。
答案 0 :(得分:1)
禁用的输入将不会提交。 检查以下内容:values of disabled inputs will not be submitted?。 也许您可以使用“只读”而不是禁用输入:http://demos.krajee.com/widget-details/select2#settings
答案 1 :(得分:0)
如果您使用的是kartik-v\select2
小部件,则需要知道它正在使用插件select2的Version 4.0
。
对于版本,>=4.0
变得更简单,您需要使用.val()
设置选择的选项,然后使用.trigger()
使选项更改可见,您需要查看2您可以触发change
或change.select2
change
触发所有附加的更改事件,包括select2。change.select2
仅导致select2
change
事件被触发。您需要将代码行更改为以下内容
$("#idPerson").val(1).trigger('change');
有关How to Add, Select or Clear
的详细示例,请参见此处。