Yii2:Select2不会使用jQuery向控制器发送值

时间:2018-12-05 15:06:52

标签: jquery yii2 jquery-select2

我正在使用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,但是未设置该值,因此控制器未收到该值

2 个答案:

答案 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您可以触发changechange.select2

的事物
  • change触发所有附加的更改事件,包括select2。
  • change.select2仅导致select2 change事件被触发。

您需要将代码行更改为以下内容

$("#idPerson").val(1).trigger('change');

有关How to Add, Select or Clear的详细示例,请参见此处。