【问题标题】:placeholder text in zend text elementZend 文本元素中的占位符文本
【发布时间】:2011-09-28 05:35:46
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: php html zend-framework placeholder


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

        已经提到要使用:

        $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'));
        

        【讨论】:

        • 对于像我这样的其他人:在 Zend Expressive 3 中,setAttrib() 被重命名为 setAttribute()
        【解决方案4】:

        这是 ZF2 的更新。
        您必须在 Zend\Form\Form 中使用它:

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

        setAttrib 不存在,但setAttribute 存在:

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

        但是在FormTextview-helper,你不能再添加选项了,所以你必须这样做:

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

        我知道,这是一个丑陋的黑客!

        【讨论】:

        • 感谢分享@stopi
        【解决方案5】:

        我使用 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') + ' *');
        });

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2019-08-17
          • 1970-01-01
          • 1970-01-01
          • 2015-01-13
          • 2014-09-15
          • 2023-04-08
          • 2015-12-15
          • 1970-01-01
          相关资源
          最近更新 更多