Zend框架中的Zend_form_element_select onchange

时间:2011-12-27 14:15:47

标签: php zend-framework zend-form

我有一个名为createDevice.php的表单:

class Admin_Form_CreateDevice extends Zend_Form
{
public function init()
{
    $this->setName('Create Device Access');
    $sort=new Zend_Form_Element_Select('employee_name');
    $sort->setLabel('Employee Name:');
    $this->addElements(array($sort));
    /* Form Elements & Other Definitions Here ... */
}

}

现在在名为viewDeviceAction()的控制器操作中,我将此表单称为:

public function viewDeviceAction()
{
    echo 'viewDevice: ';
    $form_device=new Admin_Form_CreateDevice();
    $form_device->setMethod('post');
    $form_device->employee_name->addMultiOptions($aMembers);//here $aMembers is an array.
    $this->view->form=$form_device;
 }

现在我想要以下情况: 在从下面的下拉列表中选择任何值时,应该调用一个javascript函数(位于viewDevice.phtml中)。就像一般的html一样:

<select id="EmployeeId" onchange="loadDeviceId();">

所以我只想知道如何在zend框架中的select元素上实现onchange事件

2 个答案:

答案 0 :(得分:3)

可以在服务器端添加。在创建元素时,添加onchange事件的详细信息,如下所示。

$sort=new Zend_Form_Element_Select('employee_name',array('onchange' => 'loadDeviceId();'));

现在,在输出HTML中,您会看到"onchange = 'loadDeviceId();'"附加到您的选择元素。

检查my answer in an other question

答案 1 :(得分:0)

由于您要为onChange事件实现事件处理程序,因此必须在javascript中执行此操作。 据我所知,在PHP或Zend框架中没有本地方法可以实现它。

使用JQuery你可以这样做:

$('#employee_name').change(function() 
{
   //call your javascript function here
});

您甚至可以直接调用您的函数:

$('#employee_name').change(yourFunctionName);

希望对你有所帮助。