是否可以在Zend表单中显示和隐藏onclick子表单

Is it possible to show and hide sub form onclick in a Zend form

本文关键字:表单 隐藏 onclick 显示 Zend 是否      更新时间:2023-12-08

只是想知道是否可以在单选检查事件或按钮onclick事件的zend表单中显示和隐藏子表单。因为我有一个带有用户字段元素的表单,现在我想要一个带有密码元素的子表单,这将使用户能够选择性地更改他们的密码。然而,我只想在请求时显示密码元素(即:单击单选按钮"更改密码",更改密码元素就会出现)。

这在Zend''Form中可能吗?还是我需要使用客户端javascript来显示和隐藏元素?

这是可能的,但这类事情是客户端的,所以你需要使用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文件(或者简单地将代码嵌入页面上的<script>标记中)。

$(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();
   }
  });
 });
});

现在请记住,我还没有测试代码,我只是在喝完当天的第一杯咖啡之前就把它写在脑子里了,所以……它可能有一些错误。话虽如此,这应该是你想做的事情的一个好的开始。如果有什么东西缺失或有一个你找不到的bug,请在这里问你的问题。希望这能有所帮助!