2011-02-07 4 views
0

У меня есть форма Zend, для которого я позволил компоненты JQuery с помощью:Зенд и 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. Но это не сохраняет какие-либо из параметров jQuery, заданных в классе Form, что означает, что я либо должен их устанавливать здесь, что будет работать, только если все финалисты на сайте используют одни и те же правила для отображения (чего они не делают) и Я должен перейти от использования идентификатора к классу элемента, что не имеет большого значения.

Смежные вопросы