我正在使用Yii bootstraps datepickerRow:Check this
我希望我的end_date取决于start_date。即end_date应大于开始日期。我花了几个小时在谷歌上检查是否有任何内置的解决方案,但没有找到任何解决方案。然后在我写了我自己的js代码后,我认为它完全没问题,但它不起作用。
我已经用 Cjuidatepicker 实现了这个目标,并且它的蓬勃发展。
Check my working code for yii cjuidatepicker
但我不知道为什么它不能用于yii bootstrap datepickerRow。
任何帮助都将不胜感激。
以下是我的代码:
<?php
echo $form->datepickerRow(
$identitycard, 'date_of_issue', array(
'onChange' => 'setEndDate("passport_date_of_expiry", this)',
'class' => "input-small",
'labelOptions' => array('label' => 'Date of Issue <span class="required">*</span>'),
'value' => $passportArr['date_of_issue'],
'name' => 'passport[date_of_issue]',
'readonly' => true,
'options' => array(
'autoclose' => true,
'showAnim' => 'fold',
'format' => 'yyyy-mm-dd',
'endDate' => '-infinity'
),
'prepend' => '<i class="icon icon-calendar"></i>',
'hint' => 'yyyy-mm-dd'
)
);
echo $form->datepickerRow(
$identitycard, 'date_of_expiry', array(
'class' => "input-small",
'labelOptions' => array('label' => 'Date of Expiry <span class="required">*</span>'),
'value' => $passportArr['date_of_expiry'],
'name' => 'passport[date_of_expiry]',
'readonly' => true,
'options' => array(
'autoclose' => true,
'showAnim' => 'fold',
'format' => 'yyyy-mm-dd',
),
'prepend' => '<i class="icon icon-calendar"></i>',
'hint' => 'yyyy-mm-dd'
)
);
?>
// JS代码
function setEndDate(id, date) {
var selectedDate = $(date).val();
$("#" + id).datepicker({
startDate: selectedDate,
format: "yyyy-mm-dd"
});
}
答案 0 :(得分:1)
在你的js函数setEndDate
中,第二个参数date
不是jQuery元素(在datepickerRow中的参数中为this
)。它不能用jQuery选择器读取。
在您的函数setEndDate
中,您可以将输入值改为date.value;
而不是$(date).val();
编辑:
setEndDate
函数应该可以使用yiibooster源代码中的相关更改refer to plugin docs,例如在我的yii-booster安装中:protected / components / bootstrap / assets / bootstrap-datetimepicker / js / bootstrap-datetimepicker.js):
function setEndDate(id, date) {
$("#" + id).val(date.value);
$("#" + id).datepicker('setStartDate' , date.value);
}