日付範囲を挿入する Zend フォームを作成しています。フォームは jQuery UI ライブラリを使用して拡張されているため、日付の開始フィールドと日付の終了フィールドがあり、どちらも日付ピッカー要素です。これは正常に機能しています。これが Zend_Form のこの部分です。
// 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()
)
));
最初の日付が変更されたら、2 番目の日付を更新したいと考えています。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');
});
");
一方、これは、私のdatepicker要素の初期化関数の前に、 document.ready() 関数に新しいjQueryを追加するため、どちらも機能しません:
<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 ビューヘルパーを上書きしたくありません。これは 2 つのフォーム要素を結び付けるためのものなので、Zend_Form の init() 関数に追加することは有効に思えます。