Yii2:使用jQuery,Select2不会将值发送到控制器。

19 浏览
0 Comments

Yii2:使用jQuery,Select2不会将值发送到控制器。

我正在使用Select2小部件:

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' // 用于jQuery。
        ]
    ]
)
?>

然后我使用jQuery将其禁用并设置一个值,正如我在StackOverflow问题中所阅读到的:

function($) {    
    $("#idPerson").prop("disabled", true)
        .select2('data', {id: 1, a_key: 'John'});
});

它正确地禁用了Select2,但值没有设置,因此控制器没有接收到值

0
0 Comments

在使用Yii2框架的Select2插件时,有一个问题是使用jQuery时无法将值发送到控制器。根据以上内容,我们可以得出以下原因和解决方法。

问题的原因是因为被禁用的输入框不会被提交。点击链接values of disabled inputs will not be submitted?可以查看相关信息。

解决方法是使用"readonly"而不是禁用输入框。点击链接https://demos.krajee.com/widget-details/select2#settings可以查看更多关于Select2插件的设置信息。

0
0 Comments

问题原因:使用kartik-v\select2插件的Version 4.0版本时,需要使用.val()方法设置选项为选中状态,并使用.trigger()方法使选项的变化可见。

解决方法:将代码中的一行修改为以下内容:

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

更多详细示例可参考select2官方文档中的"How to Add, Select or Clear"部分。

0