Symfony 3 неразделенный выберите не отправка

У меня есть выбор только для чтения, определенный formbuilder:

    ->add('sampledBy', EntityType::class, array(
'class' => 'AppBundle:FOSUser',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('u')
->orderBy('u.cn', 'ASC');
},
'choice_label' => 'cn',
'disabled' => true
))

Который я использую JQuery для обновления из другого поля в моей форме. Следующий этот ответ, я установил выбор так, чтобы он не мог быть изменен пользователем:

* Установите его отключенным при создании.

* Перед отправкой установите его disabled = false:

 $(form).on('submit', function() {
$("select[id$='sampledBy']").prop('disabled', false);
});

Теперь при отправке я вижу изменение поля выбора на disabled = false (цвет меняется на белый, и на него можно нажать, пока форма отправляется. Однако данные не сохраняются.

Кто-нибудь видел подобное поведение? JQuery, кажется, работает правильно, поэтому мне интересно, если это специфическая проблема Symfony.

0

Решение

Состояние не изменяется в браузере, даже если HTML сказал так.

Чтобы обойти это, я изменил поле на readonly через javascript и изменил CSS, чтобы он выглядел так, как будто он отключен.

->add('sampledBy', EntityType::class, array(
'class' => 'AppBundle:FOSUser',
'query_builder' => function (EntityRepository $er) {
return $er->createQueryBuilder('u')
->orderBy('u.cn', 'ASC');
},
'choice_label' => 'cn',
'disabled' => false
))

в css

.readonly{
background-color: transparent !important;
border : 0px !important;
box-shadow: none;
}
.disabled{
background-color: transparent !important;
border : 0px !important;
box-shadow: none;
}
1

Другие решения

В итоге я использовал css для пропуска событий мыши и JQuery для фокусировки клавиатуры:

self.blur_field = function (field) {
$(field).css('background-color', '#eee');
$(field).css('pointer-events', 'none');

$(field).focus(function () {
$(this).blur();
});
};
0

По вопросам рекламы [email protected]