Html 如何在Zend表单中禁用表单元素?
我想显示一个Zend表单,其中一个元素显示为禁用。我正在设置该值,以便用户可以看到它,但我想禁用它,以便用户无法编辑它。这还可能涉及某种css/javascript,以确保它看起来像,并且用户不可编辑。这是我的元素:Html 如何在Zend表单中禁用表单元素?,html,css,zend-framework,zend-form,Html,Css,Zend Framework,Zend Form,我想显示一个Zend表单,其中一个元素显示为禁用。我正在设置该值,以便用户可以看到它,但我想禁用它,以便用户无法编辑它。这还可能涉及某种css/javascript,以确保它看起来像,并且用户不可编辑。这是我的元素: $this->addElement('text', 'username', array( 'label' => 'Username:', 'required' => true, 'filters
$this->addElement('text', 'username', array(
'label' => 'Username:',
'required' => true,
'filters' => array('StringTrim'),
'validators' => array(
array('StringLength', false, array(2, 50))
)
));
您应该能够使用:
$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')
));
这个很好用。。。
要完成帮助,请执行以下操作:
如果您在控制器中,您可以执行以下操作:
$form->selRole->setAttribs(array('disable' => 'disable'));
selRole是选择字段的名称$var->setAttribs(数组('disabled'=>'disabled') 在最新的zf2.2.1中,您可以在控制器中执行此操作
$form->get('username')->setAttributes(array(
'disabled' => 'disabled',
));
或
将此代码应用到您的应用程序中
$formelement->setAttrib('readonly', 'true');
$formelement->setAttrib('style', 'pointer-events: none');
在提交表单后进行设置时,使用
文件元素时,只有这一点对我有效:
$element->setValueDisabled(true);
优点:保留框的原始颜色,但不允许用户更改框的值
使用其他答案的disabled
方法将复选框的颜色更改为“灰显”。此处描述的方法不适用。@Dennis:
禁用Javascript足以再次启用表单,因此您不能真正依赖Javascript。使用本机HTML可以更好地禁用它,但也可以通过删除disabled属性来简单解决
最好的选择是显示所需的值,而不是表单本身,并禁用表单和/或其元素
希望我能直接将评论添加到您的帖子中,但我有点代表性不足。请注意,您应该在复选框上使用“禁用”而不是“禁用”,因为这个错误:这里也是一样,这很有效,正是我需要的。快速有效。禁用是否真的有效,而不是禁用,或者这是一个错误。
$formelement->setAttrib('readonly', 'true');
$formelement->setAttrib('style', 'pointer-events: none');
$element->setValueDisabled(true);
// disable checkbox using JS add-on
$checkbox->setAttribute('onclick', 'return false');