【问题标题】:Yii2: Select2 doesn't send value to controller using jQueryYii2:Select2 不使用 jQuery 向控制器发送值
【发布时间】:2019-05-07 04:40:50
【问题描述】:

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

【问题讨论】:

    标签: jquery yii2 jquery-select2


    【解决方案1】:

    将不会提交禁用的输入。 检查这个:values of disabled inputs will not be submitted?。 也许您可以使用“只读”而不是禁用输入:http://demos.krajee.com/widget-details/select2#settings

    【讨论】:

      【解决方案2】:

      如果您使用的是kartik-v\select2 小部件,那么您需要知道它使用的是插件select2 的Version 4.0

      对于版本,&gt;=4.0 变得更简单,您需要使用.val() 将选项设置为选择并使用.trigger() 实际使选项更改可见,您需要查看可以触发的两件事changechange.select2

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

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

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

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

      【讨论】:

        猜你喜欢
        • 2020-01-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-04-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多