2

我正在創建一個我想插入日期範圍的Zend表單。該表單使用jQuery UI庫進行了增強,因此我有一個日期和日期字段,它們都是datepicker元素。這工作正常;這裏是Zend_Form的這部分:如何將jQuery事件回調函數添加到Zend表單元素

// Date range 
    $date = $this->getView()->date(time()); 
    $this->addElement('DatePicker', 'userday_from', array(
    'label'  => 'Datum van', 
    'value'  => $date, 
    'jQueryParams' => array(
     'defaultDate' => $date, 
     'dateFormat' => $this->getView()->date()->getFormatJquery() 
    ) 
)); 
    $this->addElement('DatePicker', 'userday_to', array(
    'label'  => 'Datum tot', 
    'value'  => $date, 
    'jQueryParams' => array(
     'defaultDate' => $date, 
     'dateFormat' => $this->getView()->date()->getFormatJquery() 
    ) 
)); 

當第一個日期改變時,我想更新第二個日期。 jQuery datepicker有一個onSelect事件。然而,我無法一個回調函數添加到jQueryParams:

$this->addElement('DatePicker', 'userday_from', array(
    'label'  => 'Datum van', 
    'value'  => $date, 
    'jQueryParams' => array(
     'defaultDate' => $date, 
     'dateFormat' => $this->getView()->date()->getFormatJquery(), 
     'onSelect' => "function(){ alert('test'); }" // ! is not working 
    ) 
)); 

因此,我嘗試添加該jQuery的「選項」之後是這樣的:

$this->getView()->jQuery() 
    ->addOnload(" 
     $('#userday_from').datepicker('option', 'onSelect', function(selectedDate){ 
      alert('test'); 
     }); 
    "); 

此,在另一方面,增加了新的jQuery的的document.ready()函數,在我的日期選擇器元素的intialization功能,因此無法正常工作或:

<script type="text/javascript">//<![CDATA[ 
$(document).ready(function() { 
      $('#userday_from').datepicker('option', 'onSelect', function(selectedDate){ 
       alert('test'); 
      }); 
    $("#userday_from").datepicker({"defaultDate":"09-11-2012","dateFormat":"dd-mm-yy"}); 
    $("#userday_to").datepicker({"defaultDate":"09-11-2012","dateFormat":"dd-mm-yy"}); 
}); 
//]]></script> 

我不希望覆蓋的DatePicker viewhe爲了破解這樣的東西在裏面。這是將兩個表單元素綁定在一起的東西,所以將它添加到Zend_Form init()函數似乎對我有用。

回答

0

這可能並不能真正解決您的問題。不過,我希望它能指出你正確的方向。正如Benjamin指出here,ZendX jQuery將停止。他還指出爲什麼使用ZF生成jQuery代碼不是一個好主意。我個人完全同意本傑明。

ZendX_Jquery默認會生成錯誤的代碼。它不僅會產生錯誤的代碼,還會讓您停止思考自己實際做了什麼,即將生成哪些代碼。此外,它會生成「內聯」代碼,即它將生成直接嵌入在您的HTML代碼中的JavaScript代碼,從而不會被用戶瀏覽器緩存。實際上,我甚至不確定它是否會生成unobtrusive javascript代碼。

把它放在一起我強烈建議跳過使用ZendX_JQuery。

再見, 基督教

1

這是老問題,但與Zend使用Zend_Json_Expr

使用回調函數在您的情況:

'onSelect' => new Zend_Json_Expr("function(){ alert('test'); }") 
+0

一個很好的補充,但沒有回答我的問題。 – raps

+0

已結帳嗎? http://stackoverflow.com/questions/887696/jquery-datepicker-onselect-wont-work –

相關問題