yii Kartik日期选择器禁用日期早于startDate

xn1cxnb4  于 2022-11-09  发布在  其他
关注(0)|答案(3)|浏览(135)

我正在使用DatePicker Widget - © Kartik - Krajee Yii Extensions为我的日期范围..在那里我有一个startDate和endDate.正如你可以在下面的图像中看到,我选择了startDate:2016-03-29 00:00..我如何禁用基于startDate的endDate日期选择器中的日期..这意味着所有小于startDate的日期都将被禁用。

<div class="form-control-datepicker">
<?php
echo DateTimePicker::widget([
    'name' => 'start',
    'id' => 'start',
    'value' => $start,
    'type' => DateTimePicker::TYPE_INPUT,
    'pickerButton' => ['icon' => 'time'],
    'pluginOptions' => [
        'autoclose'=>true,
        'format' => 'yyyy/mm/dd HH:ii',
    ]
]);
?>
</div>
~
<div class="form-control-datepicker">
 <?php
    echo DateTimePicker::widget([
    'name' => 'end',
    'id' => 'end',
    'value' => $end,
    'type' => DateTimePicker::TYPE_INPUT,
    'pluginOptions' => [
        'autoclose'=>true,
        'format' => 'yyyy/mm/dd HH:ii',
    ]
]);
?>
</div>
piv4azn7

piv4azn71#

使用后缀选择符,例如"#[your-selector]-kvdate""#[your-selector]-disp-kvdate"
请尝试以下操作:

'pluginEvents' =>[
    "changeDate" => "function(e) {
          $('#end').val('');
          $('#end-disp-kvdate').kvDatepicker('update', '');
          $('#end-disp-kvdate').kvDatepicker('setStartDate', new Date(e.date));
    }",
]
hgb9j2n6

hgb9j2n62#

有一个选项可用于此目的:

'pluginOptions' => [
    'startDate' => date('Y-m-d'),
    'autoclose'=>true,
    'format' => 'yyyy/mm/dd HH:ii',
]

它应该能工作。
好吧,我不明白这个问题。将onSelect添加到#start:

'pickerButton'=>['icon'=>'time'],
    'onSelect'=> 'js:function(date){
        var endDate = new Date(date);
        $("#end").datepicker( "option", "minDate", endDate );
        }',
    'pluginOptions'=>[ whatever ... ],

我已经在jsfiddle中测试过了,所以这应该可以为你工作。我不确定语法,但是它应该可以工作...它在Yii 1中为我做了。如果你想限制endDate不显示当前日期之前的日期,这是有意义的,只需添加minDate选项。

iqjalb3h

iqjalb3h3#

对于禁用日期,可以使用或

'pluginOptions'=>[
                'locale'=>['format' => 'Y-m-d'],
                'minDate'=> "2017-05-12",
                'isInvalidDate' => new \yii\web\JsExpression(
                    "function(date){
                        var some_date_range = [ '2017-05-22', ];
                        for(var ii = 0; ii < some_date_range.length; ii++){
                            if (date.format('YYYY-MM-DD') == some_date_range[ii]){
                                return true;
                            }
                        }
                }"),
            ]

最小日期禁用2017-05-12的所有次要日期,并且InvalidDate禁用日期范围

相关问题