【发布时间】:2021-10-30 06:57:10
【问题描述】:
我正在尝试制作一个根据用户响应进行更改的表单,我有一个 ChoiceType::class 用于第一部分,其中“是”或“否”作为选项。如果用户选择“是”,我希望显示表单的第二部分以得到他们的回复,但如果他们选择“否”,我只想隐藏第二个表单。
这是我目前的表格
public function buildForm(FormBuilderInterface $builder, array $options)
{
->add('attending', ChoiceType::class, [
'choices' => [
'yes' => true,
'no' => false,
],
'attr' => [
'class' => 'attendanceStatus'
],
'mapped' => false,
'required' => true,
'label' => 'Will you be attending?',
'placeholder' => 'Please make selection',
])
->add('bringingGuest', ChoiceType::class, [
'choices' => [
'yes' => true,
'no' => false,
],
我将表单包装在一个类中,并为每个表单指定了一个 ID
<div class="attendance">
<div id="attendance-status">
{{ form_label(form.attending) }}
{{ form_errors(form.attending) }}
{{ form_widget(form.attending) }}
</div>
<div id="guest" style="display: none;">
{{ form_label(form.bringingGuest) }}
{{ form_errors(form.bringingGuest) }}
{{ form_widget(form.bringingGuest) }}
</div>
</div>
我不是最擅长 javascript,但我尝试做这样的 if 语句
if ('.attending' == true) {
document.getElementById('guest').style.display = 'block';
}
我在这方面已经有一段时间了,但我似乎无法弄清楚如何正确地做到这一点。我认为这就像为用户选择设置一个事件侦听器,然后在满足条件时仅使用 javascript 显示第二种形式。
【问题讨论】:
标签: javascript php symfony symfony5