【问题标题】:Setting a label's id in Zend_Form在 Zend_Form 中设置标签的 id
【发布时间】:2009-03-26 16:56:43
【问题描述】:

我正在尝试为我的表单标签之一设置一个 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>

有什么想法吗?

【问题讨论】:

    标签: zend-framework zend-form zend-form-element


    【解决方案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' 属性的值

    【讨论】:

      【解决方案2】:

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

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

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

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2020-05-13
        • 2011-03-10
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多