1

为了更改表单元素的属性值,我使用了一个 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 生成的 name 属性值可以被 javascript 理解?

注意:我试过这个:

$builder
      ->add('firstName', 'text', 
               array('attr' => array('name' => 'firstName')));

但这不起作用,因为我为同一个元素获得了 2 个名称属性,而第一个仅由 java 考虑(即“UserAccountCreateAccount [firstName]”)

4

1 回答 1

0

您可以使用以下方法访问输入,而不是:

document.forms["UserAccountCreateAccount"]["UserAccountCreateAccount[firstName]"].readonly = true

顺便说一句,它是 Javascript,而不是 Java :)

于 2013-07-08T12:06:58.240 回答