要更改表单元素的属性值,我使用的javascript通过其name属性访问它们。
Symfony2.2的表单组件生成一个自动名称值,该值由getName()函数的返回值和BuidlForm方法中给予该元素的名称组成。
public function getName()
{
return 'UserAccountCreateAccount';
}
public function buildForm(FormBuilderInterface $builder, array $options)
{
$builder
->add('firstName', 'text',
在此示例中,我的name属性的值为 UserAccountCreateAccount [firstName]
当我在java中尝试这个时:
useraccountinfoform.UserAccountCreateAccount[firstName].readOnly = true;
java肯定是误解(我猜的数组)并且无法正常工作。
我找到的唯一解决方法是在getName()中返回一个空字符串,使其具有“firstName”作为属性的名称。
public function getName()
{
return '';
}
在javascript中:
useraccountinfoform.firstName.readOnly = true;
然后正在工作。
是否有另一种更清洁的方法来处理这个问题,并且有一个由symfony生成的名称属性值,可以通过javascript理解吗?
注意:我试过这个:
$builder
->add('firstName', 'text',
array('attr' => array('name' => 'firstName')));
但这不起作用,因为我为同一个元素获得了2个名称属性,而第一个只被java考虑(即“UserAccountCreateAccount [firstName]”)
答案 0 :(得分:0)
您可以使用以下方法访问输入:
document.forms["UserAccountCreateAccount"]["UserAccountCreateAccount[firstName]"].readonly = true
顺便说一下,它是Javascript,而不是Java:)