我正在创建一个Zend表单,我想在其中插入日期范围。使用jQuery UI库增强了表单,因此我有一个日期和字段的日期,这两个都是datepicker元素。这工作正常;这是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()
)
));
更改第一个日期后,我想更新第二个日期。 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');
});
");
另一方面,这在document.ready()函数中添加了新的jQuery,在我的datepicker元素的初始化函数之前,因此也不起作用:
<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 viewhelper以便在其中破解这样的东西。这是将2个表单元素绑定在一起的东西,所以将它添加到Zend_Form init()函数似乎对我有用。
答案 0 :(得分:1)
这是一个老问题,但是使用Zend的函数回调使用Zend_Json_Expr
在你的情况下:
'onSelect' => new Zend_Json_Expr("function(){ alert('test'); }")
答案 1 :(得分:0)
这可能并没有真正解决你的问题。但是,我希望它能指出你正确的方向。正如Benjamin指出here,ZendX jQuery将停止使用。他还指出为什么从ZF生成jQuery代码并不是一个好主意。我个人完全赞同本杰明。
ZendX_Jquery默认会生成错误的代码。它不仅会产生错误的代码,还会让你不再考虑你实际在做什么,即会生成哪些代码。而且,它产生&#34;内联&#34;代码,即它将生成直接嵌入HTML代码的javascript代码,因此不会被用户浏览器缓存。实际上,我甚至不确定它是否会生成unobtrusive javascript代码。
总之,我强烈建议跳过使用ZendX_JQuery。
再见 基督教