是否可以以Zend形式显示和隐藏子表单onclick

时间:2012-07-20 20:01:21

标签: javascript zend-framework zend-form

只是想知道是否可以在无线电检查事件或按钮onclick事件中以zend形式显示和隐藏子表单。由于我有一个带有用户字段元素的表单,现在我想要一个带有密码元素的子表单,这将使用户可以选择更改其密码。但是我只想根据请求显示密码元素(即:单击单选按钮'更改密码'并显示更改密码元素。)

这是可以使用Zend \ Form还是我需要使用客户端javascript来显示和隐藏元素?

1 个答案:

答案 0 :(得分:2)

有可能但是那种东西是客户端,所以你需要使用javascript才能做到这一点。 Personnaly,我喜欢将jQuery用于那种东西,它使它变得容易多了。这是一个如何做到这一点的例子。

class My_Form extends Zend_Form {

$field = $this->createElement('select', 'myselect');
$field->setLabel('Choose to display the form or not');
$field->setMultiOptions(array('1'='Display', '2'=>'Do not display'));
$this->addElement($field);

$field = $this->createElement('text', 'optionaltext');
$field->setLabel('This is an optional field');
$this->addElement($fiel);
}

现在,在你的布局中,你应该包含jQuery库:

<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js" type="text/javascript">

最后,您应该包含另一个.js文件(或者只是将代码嵌入到页面上的&lt; script&gt;标记中)。

$(document).ready(function() {
 $(function() {
  //Function triggered when changing the value in the drop down
  $('#myselect').change(function(event) {
   if($('#myselect').val() == 1) {
    //Show elements
    $('#optionaltext').show();
    //The following line shows/hides all the dd/dt wrappers as well
    $('[id*=optionaltext]).show();
   } else {
    //Hide elements
    $('#optionaltext').hide();
    //The following line shows/hides all the dd/dt wrappers as well
    $('[id*=optionaltext]).hide();
   }
  });
 });
});

现在请记住,我还没有对代码进行过测试,而且在我实际完成当天的第一杯咖啡之前,我就把它写在了我的头顶,所以...它可能有一些错误。这就是说,它应该是你想要做的一个良好的开端。如果缺少某些内容或者您找不到错误,请在此处提出您的问题。希望这有帮助!