我想显示一个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))
)
));
答案 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会更好地禁用它,但也可以通过删除已禁用的属性来解决它。
最佳选择是显示您想要的值而不是表单本身,并禁用表单和/或它的元素。
希望我能将评论直接添加到您的帖子中,但我有些代表。