2

我正在尝试为我的表单标签之一设置一个 id,以便以后可以用 jquery 隐藏它。这是我的元素:

$password = new Zend_Form_Element_Password('password');
$password->setLabel('Password:')
    ->setRequired(true)
    ->addFilter('StripTags')
    ->addFilter('StringTrim')
    ->addValidator('NotEmpty')
    ->setAttrib( "id", "password" );

在源代码中,它看起来像这样:

<dt>
<label for="password" class="required">Password:</label>
</dt>

<dd>
<input type="password" name="password" id="password" value="">
</dd>

我需要标签看起来像:

<label id="pass_label" for="password" class="required">Password:</label>

有任何想法吗?

4

2 回答 2

1

使用装饰器似乎无法更改标签的 id,但您可以轻松添加类名

$decorators = array(
        array('ViewHelper'),
        array('Errors'),
        array('Description', array('tag' => 'p', 'class' => 'description')),
        array('HtmlTag', array('tag' => 'dd')),
        array('Label', array('tag' => 'dt', 'class' => 'pass_label')),
    );

    $password->setDecorators($decorators);

这导致

<label class="pass_label optional" for="password">Password</label>

我尝试以相同的方式设置 id,但这不起作用。如果您将 id 作为选项数组传入,这会更改“for”属性的值

于 2009-03-26T17:45:11.320 回答
1

我知道我迟到了,但如果你想使用 jQuery 隐藏它,你可以根据 for 属性进行选择,如下所示:

$('label[for="password"]').hide();

应该做的伎俩。根据 jQuery 的版本,您可能需要也可能不需要 @ 在属性之前,如下所示:

$('label[@for="password"]').hide();
于 2010-05-07T15:36:51.713 回答