Yii2 + 2amigos DateRangePicker 模块。不能正常工作
Yii2 + 2amigos DateRangePicker module. Doesn't work correctly
我已将 DateRangePicker 小部件放置在 2 个位置。首先是 Bootstrap 模态 window,通过单击按钮打开。第二个我想在没有模态的页面上显示 window。结果是它在模式 window 中正常工作,但页面上的第二个工作不正常,我的意思是它看起来和显示正确但在单击字段时不显示日历。
模态中的代码是:
<div class="modal fade" id="responsive" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel4">Book</h4>
</div>
<div class="modal-body">
<?php $form = ActiveForm::begin(); ?>
...
<?= $form->field($model, 'start_date')->widget(DateRangePicker::className(), [
'attributeTo' => 'end_date',
'language' => 'ru',
'labelTo' => 'до',
// 'size' => 'lg',
'clientOptions' => [
'autoclose' => true,
'format' => 'yyyy-mm-d',
'todayHighlight' => true,
]
])->label('Укажите период');?>
...
<?php ActiveForm::end(); ?>
</div>
</div>
</div>
</div>
页面上div:
<div>
<?php $form = ActiveForm::begin(); ?>
...
<?= $form->field($model, 'start_date')->widget(DateRangePicker::className(), [
'attributeTo' => 'end_date',
'language' => 'ru',
'labelTo' => 'до',
// 'size' => 'lg',
'clientOptions' => [
'autoclose' => true,
'format' => 'yyyy-mm-d',
'todayHighlight' => true,
]
])->label('Укажите период');?>
...
<?php ActiveForm::end(); ?>
</div>
P.S。当我使用 DatePicker 小部件时存在同样的问题。又过了一会儿,我又添加了一个模式,但它在那里也不起作用。仅在第一个模态中。
再等一下:我尝试添加没有模型的简单 DatePicker 小部件,它可以工作。
<?= DatePicker::widget([
'name' => 'Test',
'value' => '02-16-2012',
'template' => '{addon}{input}',
'clientOptions' => [
'autoclose' => true,
'format' => 'dd-M-yyyy'
]
]);?>
我在使用模型添加此小部件时出现问题。
我认为您的问题发生是因为您对两个小部件使用了相同的 model-attribute。因此,一页有两个具有相同 id
和 name
属性的输入。在这种情况下,JS 库无法正确处理它们。只需尝试为第二个小部件使用其他属性名称。它可能会有所帮助。
PS:我不确定,但可能存在为第二个小部件定义其他 id
和 name
的方法(可能使用 clientOptions)。这取决于 JS 库及其版本。
我已将 DateRangePicker 小部件放置在 2 个位置。首先是 Bootstrap 模态 window,通过单击按钮打开。第二个我想在没有模态的页面上显示 window。结果是它在模式 window 中正常工作,但页面上的第二个工作不正常,我的意思是它看起来和显示正确但在单击字段时不显示日历。
模态中的代码是:
<div class="modal fade" id="responsive" tabindex="-1" role="dialog" aria-labelledby="myModalLabel" aria-hidden="true">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<button type="button" class="close" data-dismiss="modal" aria-hidden="true">×</button>
<h4 class="modal-title" id="myModalLabel4">Book</h4>
</div>
<div class="modal-body">
<?php $form = ActiveForm::begin(); ?>
...
<?= $form->field($model, 'start_date')->widget(DateRangePicker::className(), [
'attributeTo' => 'end_date',
'language' => 'ru',
'labelTo' => 'до',
// 'size' => 'lg',
'clientOptions' => [
'autoclose' => true,
'format' => 'yyyy-mm-d',
'todayHighlight' => true,
]
])->label('Укажите период');?>
...
<?php ActiveForm::end(); ?>
</div>
</div>
</div>
</div>
页面上div:
<div>
<?php $form = ActiveForm::begin(); ?>
...
<?= $form->field($model, 'start_date')->widget(DateRangePicker::className(), [
'attributeTo' => 'end_date',
'language' => 'ru',
'labelTo' => 'до',
// 'size' => 'lg',
'clientOptions' => [
'autoclose' => true,
'format' => 'yyyy-mm-d',
'todayHighlight' => true,
]
])->label('Укажите период');?>
...
<?php ActiveForm::end(); ?>
</div>
P.S。当我使用 DatePicker 小部件时存在同样的问题。又过了一会儿,我又添加了一个模式,但它在那里也不起作用。仅在第一个模态中。
再等一下:我尝试添加没有模型的简单 DatePicker 小部件,它可以工作。
<?= DatePicker::widget([
'name' => 'Test',
'value' => '02-16-2012',
'template' => '{addon}{input}',
'clientOptions' => [
'autoclose' => true,
'format' => 'dd-M-yyyy'
]
]);?>
我在使用模型添加此小部件时出现问题。
我认为您的问题发生是因为您对两个小部件使用了相同的 model-attribute。因此,一页有两个具有相同 id
和 name
属性的输入。在这种情况下,JS 库无法正确处理它们。只需尝试为第二个小部件使用其他属性名称。它可能会有所帮助。
PS:我不确定,但可能存在为第二个小部件定义其他 id
和 name
的方法(可能使用 clientOptions)。这取决于 JS 库及其版本。