2011-02-07 74 views
0

我有一個Zend形式,我已通過啓用jQuery的組件:的Zend和jQuery的DatePicker產生意外結果

ZendX_JQuery::enableForm($this); 

,然後加入幾個非jQuery的元件,並且一個jQuery的DatePicker的,其定義爲:

$testing = new ZendX_JQuery_Form_Element_DatePicker('dp1', array('jQueryParams' => array('dateFormat' => 'yy-mm-dd'))); 
$testing->setLabel('Date of Birth 2') 
    ->setRequired(true) 
    ->addValidator('NotEmpty'); 

然後我設置的裝飾如下(第一對所有的元素,然後更換爲的DatePicker裝飾者定義):

$this->clearDecorators(); 
$this->addDecorator('FormElements') 
    ->addDecorator('HtmlTag', array('tag' => 'div', 'class'=>'form-block')) 
    ->addDecorator('Form'); 

$this->setElementDecorators(array(
    array('ViewHelper'), 
    array('Errors'), 
    array('Description', array('tag' => 'div', 'class' => 'tooltip')), 
    array('Label', array('separator'=>' ')), 
    array('HtmlTag', array('tag' => 'div', 'class'=>'element-block')), 
)); 

$formJQueryElements = array(
    array('UiWidgetElement', array('tag' => '')), 
    array('Errors'), 
    array('Description', array('tag' => 'div', 'class' => 'tooltip')), 
    array('Label', array('separator' => ' ')), 
    array('HtmlTag', array('tag' => 'div', 'class' => 'element-block')), 
); 
$this->getElement('dp1')->clearDecorators(); 
$this->getElement('dp1')->setDecorators($formJQueryElements); 

這似乎正確顯示所有我的領域,除了DatePicker,它已被轉換成文本字段。該字段的HTML看起來像:

<div class="element-block"> 
    <label for="dp1" class="required">Date of Birth 2</label> 
    <input type="text" name="dp1" id="dp1" value=""> 
</div> 

它不是DatePicker。我在設置時錯過了什麼,或者我在這裏做了什麼錯誤?

非常感謝。

回答

0

找到答案,至少部分。我忘了,包括在我看來,下面的代碼,這意味着該領域沒有得到轉換成日期字段:

<script> 
    $(function() { 
     $("#dp1").datepicker(); 
    }); 
</script> 

這改變了文本字段成一個datepicker。但是這並沒有保留在Form類中設置的任何jQuery選項,這意味着我必須在這裏設置它們,這隻有在網站上的所有日期選擇器使用相同的規則來顯示(它們不會)的情況下才會起作用,並且我必須改變使用ID來使用元素的類,這不是什麼大問題。