Yii2: Select2 не отправляет значение в контроллер с помощью jQuery - PullRequest
0 голосов
/ 05 декабря 2018

Я использую виджет 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, чтобы отключить его и установить значение, когда я читаю в этом вопросе StackOverflow :

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

Он правильно отключил Select2, но значение не установлено, поэтому контроллер не получил значение .

Ответы [ 2 ]

0 голосов
/ 13 декабря 2018

отключенные входы не будут отправлены.проверьте это: значения отключенных входов не будут отправлены? .Возможно, вы можете использовать «только чтение» вместо отключения ввода: http://demos.krajee.com/widget-details/select2#settings

0 голосов
/ 06 декабря 2018

Если вы используете виджет kartik-v\select2, то вам нужно знать, что он использует Version 4.0 плагина select2.

Для версий >=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.

...