如何在Zend表单中禁用表单元素?

时间:2009-11-18 20:52:15

标签: html css zend-framework zend-form

我想显示一个Zend Form,其中一个元素显示为disabled。我正在设置值,以便用户可以看到它,但我想禁用它,以便用户无法编辑它。这可能还涉及某种css / javascript,以确保它看起来像用户不可编辑。这是我的要素:

    $this->addElement('text', 'username', array(
        'label'      => 'Username:',
        'required'   => true,
        'filters'    => array('StringTrim'),
        'validators' => array(
            array('StringLength', false, array(2, 50))
        )
    ));

9 个答案:

答案 0 :(得分:48)

你应该可以使用:

$this->username->setAttrib('disabled', 'disabled');

我认为你也可以:

$this->addElement('text', 'username', array(
    'label'      => 'Username:',
    'required'   => true,
    'filters'    => array('StringTrim'),
    'validators' => array(
        array('StringLength', false, array(2, 50))
    ),
    'attribs'    => array('disabled' => 'disabled')
));

答案 1 :(得分:5)

这很好用...... 只是为了完成帮助: 如果你在控制器中,你可以这样做:

$form->selRole->setAttribs(array('disable' => 'disable'));

selRole是选择字段的名称

答案 2 :(得分:1)

在最新的zf2.2.1中,您可以在控制器中执行此操作;

$form->get('username')->setAttributes(array(
    'disabled' => 'disabled',  
)); 

答案 3 :(得分:1)

$form->getElement("username")->setAttribs(array('disabled' => 'disabled', ));

$form->getElement("username")->setAttrib('disabled', 'disabled');

答案 4 :(得分:0)

$ var-> setAttribs(array('disabled'=>'禁用'));

答案 5 :(得分:0)

将此代码应用到您的应用程序

$formelement->setAttrib('readonly', 'true');
$formelement->setAttrib('style', 'pointer-events: none');

答案 6 :(得分:0)

在提交表单后设置时使用file element时,只有这对我有用:

$element->setValueDisabled(true);

答案 7 :(得分:0)

// disable checkbox using JS add-on
$checkbox->setAttribute('onclick', 'return false'); 

好处:保留盒子的原始颜色,但不允许用户更改盒子的值。

使用其他答案的disabled方法会将复选框的颜色更改为"灰显"。这里描述的方法没有。

答案 8 :(得分:0)

@Dennis:

禁用Javascript足以再次启用该表单,因此您无法真正依赖Javascript。使用原生HTML会更好地禁用它,但也可以通过删除已禁用的属性来解决它。

最佳选择是显示您想要的值而不是表单本身,并禁用表单和/或它的元素。

希望我能将评论直接添加到您的帖子中,但我有些代表。