我有一个简单的按钮$builder->add('language_switcher', ButtonType::class);
的形式,它应该只是,如果按下,添加另一个字段。要做到这一点,我用的Symfony的食谱http://symfony.com/doc/current/form/dynamic_form_modification.html按下按钮后添加一个动态的表单字段
$builder
->get('language_switcher')
->addEventListener(
FormEvents::POST_SUBMIT,
function() use ($builder, $options) {
$preparedOptions = $this->prepareOptions($options['data']['productCustomizations']);
$builder->add('lang_switcher'), ChoiceType::class, $preparedOptions);
}
);
现在,当通过AJAX
在提交<script>
var $button = $('#xyz');
$button.click(function() {
var $form = $(this).closest('form');
$.ajax({
url: $form.attr('action'),
type: $form.attr('method'),
success: function(html) {
console.log(html);
$('#xyz').replaceWith($(html).find('#lang_switcher'));
}
});
});
</script>
,我发现了错误Buttons do not support event listeners.
于是,我尝试过了一个隐藏字段。我加入了隐藏字段的形式设置EventListener
它,并添加这个data
我AJAX
要求
data[$('#id_of_hidden_field').attr('name')] = 1;
然而,这也没做。该书中的例子是在提交选择字段之后,因此我不知道如何使其适应我的需求。我无法使用SubmitType
,因为它会提交表单,对吧?我只想用一个简单的按钮。
问题是,当我做一个console.log(html)
我看不到新的html元素,所以看起来好像我没有去EventListener
这很奇怪,因为如果我在监听器I内部转储内容正在获取一些数据。它只是好像我没有得到它的回应
有关事件侦听器安装到什么(父)形式呢?这实际上触发了这个事件。 – Rvanlaak