2013-06-02 61 views
0

這裏是我的代碼:股利隱藏/顯示與單選按鈕點擊使用Zend形式

類File_Form_AddFile擴展Custom_Form {

public function init() { 

    $translate = Zend_Registry::get('translate'); 
    $this->setTranslator($translate); 
    $this->setName("addfile"); 
    $this->setMethod('post'); 


    $this->addElement('text', 'title', array(
     'filters' => array('StringTrim'), 
     'validators' => array(
      array('StringLength', false, array(0, 50)), 
     ), 
     'required' => true, 
     'label' => __('Title') . ':', 
    )); 


    $this->addElement('radio', 'type', array(
     'label'=>__('Applicant Type'), 
     'multiOptions' => array(
      'office' => 'Office', 
      'community' => 'Community', 
      'person' => 'Person', 
     ), 
     'required' => true, 
     'separator' => '', 
     'value' => 'office' 
    )); 


    **// I want this section to show only after 'community' is clicked at above input field.** 

    $this->addElement('radio', 'community_is_registered', array(
     'label'=>__('Registered Community?'), 
     'multiOptions' => array(
      1 => 'Yes', 
      0 => 'No', 
     ), 
     'separator' => '', 
     'value' =>'0' 
    )); 


    $this->addElement('text', 'name', array(
     'filters' => array('StringTrim'), 
     'validators' => array(
      array('StringLength', false, array(0, 100)), 
     ), 
     'required' => true, 
     'label' => __('Applicant Name') . ':', 
    )); 



    $this->addElement('submit', 'save', array(
     'required' => false, 
     'ignore' => true, 
     'label' => __('Save'), 
    )); 
    $this->save->removeDecorator('label'); 
} 

}

這是添加的某些信息的形式文件。我想在這裏顯示「註冊社區」部分?只有在「申請人類型」點擊「社區」按鈕後。尋求幫助!

回答

0

由於您希望基於客戶端發生的某些操作在客戶端發生某些行爲,它似乎基本上是客戶端問題。

也許最簡單的事情是:

  1. 添加一定的CSS類已註冊的社區元素(或顯示組,如果它是元素的集合),服務器端表單創建過程中。

  2. 使用前端CSS來隱藏該類的所有表單元素。

  3. 當「申請人類型」具有所需的值時,向「申請人類型」元素添加客戶端點擊式處理程序,以刪除/更改類或顯示/隱藏「註冊社區」部分。

+0

親愛的大衛,是啊這是可能在查看頁面使用正常的HTML形式。但我不知道我們可以用Zend的形式做到嗎?由於在這裏以zend的形式,我沒有找到一種方法來分配id到特定的div包含一些輸入字段。 – frozenfire

+0

使用'Zend_Form',典型的方法是將該部分的所有字段放入顯示組中。然後,您可以爲該顯示組設置裝飾器,以在包含div/fieldset上渲染CSS id/class。然後上面的客戶端方法應該可以工作。 –