我想根据同一表单上另一个元素的输入禁用其中一个zend表单元素的验证。我需要使用javascript / jquery来实现这一点。一些非常常见但非常令人惊讶的是无法通过互联网找到它。
e.g。
在控制器中:
$oFormMassEdit = new Account_Form_Returns_Return();
$this->view->form = $oFormMassEdit;
在Account_Form_Returns_Return的构造函数中:
$oNoteElement = new Zend_Form_Element_Textarea('option', array(
'required' => true,
));
$this->addElemet($oNoteElement)
$oReasonElement = new Zend_Form_Element_Select('note', array(
'multiOptions' => array (
'return' => 'return',
'defect' => 'Kaput',
'other' => 'Anderer Grund'
),
'required' => true,
));
$this->addElement($oReasonElement);
$this->addDisplayGroup(array('note', 'option'), 'main', array('legend' => 'Retouren'));
$this->addElement('button','send', array(
'type' => 'submit',
'label' => 'Methode speichern',
));
最后在视图中,
<?= $this->form; ?>
答案 0 :(得分:1)
Javascript不能(不是以明智的方式)切换Zend_Form配置。您可以做的是在验证时更改某些表单字段的“必需”参数。例如;如果你想让fieldTwo为空,如果fieldOne的'desiredValue'为值,你可以使用表格中的以下函数来实现这一点:
public function isValid($data) {
if('desiredValue' == $data['fieldOne'])) {
$this->getElement('fieldTwo')->setRequired(false);
}
return parent::isValid($data);
}