2009-03-26 8 views
2

フォームのラベルのIDを設定しようとしているので、後でjqueryでそのラベルを非表示にすることができます。ここに私の要素があります:ソースでラベルのIDをZend_Formに設定する

$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> 

任意のアイデア?

答えて

1

私はIDを設定しようとしましたデコレータを使用して、ラベルの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を渡すと、これは 'for'属性の値を変更します

1

私はパーティーに遅れていることは知っていますが、jQueryを使用して非表示にする場合は、次のようにfor属性に基づいて選択します。

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

このトリックを行う必要があります。 jQueryのバージョンに応じて、属性の前に@が必要な場合とそうでない場合があります。

$('label[@for="password"]').hide(); 
関連する問題