文本元素中的占位符文本


placeholder text in zend text element

我正在开发一个Zend表单应用程序,其中我的表单包含带水印的文本框。

我们可以在HTML中通过以下代码实现:

<input type="text" placeholder="Search" name="q" />

我的问题是如何使用Zend表单在我的输入框中添加占位符属性?

前面已经提到使用:

$element->setAttrib('placeholder', 'Search');

在扩展Zend_Form

时也可以这样使用
$element = $this->createElement('text', 'q', array(
           'placeholder' => 'Search',
           'label'       => 'Search'
));

或者在视图内部使用Zend_View_Helper_FormText

echo $this->formText('q',null, array('placeholder' => 'Search'));

我认为你可以像这样在元素上调用settAttrib()当你定义元素

    $element->setAttrib ( 'placeholder', 'search' );

对于Zend_Form_Element对象,您可以指定属性:

$element->setAttrib('placeholder', 'Search');

这是ZF2的更新。
你必须在Zend'Form'Form:

中使用它
$this->add(
    [
        'name'    => 'q',
        'type'    => 'Text',
        'options' => [
            'label' => 'Search',
        ],
        'attributes' => [
            'placeholder' => 'Search',
        ],
    ]
);

setAttrib不存在,但setAttribute存在:

$element->setAttribute('placeholder', 'Search');

但是在FormText视图助手,你不能再添加选项,所以你必须做:

$element = $form->get('q');
$saved_placeholder = $element->getAttribute('placeholder'); // works even if not defined
$element->setAttribute('placeholder', 'Search');
echo $this->formText($element);
$element->setAttribute('placeholder', $saved_placeholder);

我的解决方案是使用jQuery

var elements = ['email', 'password', 'password_confirm'];
$j(elements).each(function(i, elem){
    $j('#' + elem).attr('placeholder', $j('#' + elem + '-label label').text());
    $j('#' + elem + '-label').hide();
    if ($j('#' + elem).hasClass('required-entry')) $j('#' + elem).attr('placeholder', $j('#' + elem).attr('placeholder') + ' *');
});