我搜索了很多,但找不到这个相当简单的问题的答案:
在Symfony 2.8中,我有一个表单,用于呈现国家/地区字段。根据它的选择,我想显示一个zipcode和fedestate字段,仅用于选择'Deutschland'(数据'D')。以下是country-field的代码:
->add('plzveranstaltungsort', TextType::class, array('label' => 'PLZ', 'attr' => array('size' => '5', 'maxlength' => '5')))
->add('bundeslandveranstaltungsort', ChoiceType::class, array(
'choices' => array(
0 => ' ',
1 => 'Baden-Württemberg',
2 => 'Bayern',
3 => 'Berlin',
4 => 'Brandenburg',
5 => 'Bremen',
6 => 'Hamburg',
7 => 'Hessen',
8 => 'Mecklenburg-Vorpommern',
10 => 'Nordrhein-Westfalen',
11 => 'Rheinland-Pfalz',
12 => 'Saarland',
13 => 'Sachsen',
14 => 'Sachsen-Anhalt',
15 => 'Schleswig-Holstein',
16 => 'Thüringen',
),
'data' => 0,
'label' => 'Bundesland Tagungsstätte'))
预先填充了选择'德国',数据'D'。
基于我想要动态显示:
class whRook : public Piesa
{
private:
AnsiString strwhRookImg;
public:
whRook(TForm*);
void LoadImg();
};
如果未选择“Deutschland”,我只想隐藏/禁用这些字段(并在其他地方处理空值)。
我尝试了http://symfony.com/doc/current/form/dynamic_form_modification.html和其他一些javascript的东西,但由于我基本上不知道任何JS,我找不到任何合适的资源。
答案 0 :(得分:0)
由于默认情况下nationveranstaltungsort
字段已选择德国,因此无需隐藏plzveranstaltungsort
。您可以使用以下内容隐藏Javascript:
var bund = document.getElementById("bundeslandveranstaltungsort");
bund.style.display = "none";
然后显示元素使用:
bund.style.display = "inline";
根据您使用的css,您可能需要使用:
bund.style.display =" block&#34 ;;
在您的表单中,您可以指定一个属性,以便在更改时运行Javascript函数,如下所示:
->add('nationveranstaltungsort', ChoiceType::class, array(
'choices' => array(
'D' => 'Deutschland',
'AFG' => 'Afghanistan',
),
'data' => 'D',
'label' => 'Nation Tagungsstätte',
'attr' => array(
'onchange' => 'changeCountry()',
),
))
然后在Javascript函数changeCountry()
中隐藏元素或使用上面的内容显示它。
我展示的ID实际上并不是你将使用的,但是如果你使用浏览器工具,例如在Firefox中(我建议使用FireFox进行测试),你可以右键单击选择元素并选择" Inspect element& #34 ;;然后你可以看到"实际" id值是您需要使用的。这取决于您的表单名称。