Yii2 gridview过滤与dateRangePicker赢得';不适用于输入更改

Yii2 gridview过滤与dateRangePicker赢得';不适用于输入更改,gridview,yii2,Gridview,Yii2,我已将datePeriodPicker应用于Yii2 gridview筛选器行中的输入。它可以工作,但在插入值后不立即应用。您必须再次单击输入并按Enter键。其他领域运作良好。有没有什么方法可以让它在更改后立即像其他输入一样应用 以下是我使用的脚本: var dateInput = $("[name='RequestSearch[request_date]']" ), configObject = { autoClose: true, lang

我已将datePeriodPicker应用于Yii2 gridview筛选器行中的输入。它可以工作,但在插入值后不立即应用。您必须再次单击输入并按Enter键。其他领域运作良好。有没有什么方法可以让它在更改后立即像其他输入一样应用

以下是我使用的脚本:

var 
    dateInput = $("[name='RequestSearch[request_date]']" ),
    configObject = {
        autoClose: true,
        language:'ru',
        separator: '/',
        showShortcuts : true,
        shortcuts: {
            'next-days': [3,5,7],
            'next': ['week','month','year']
        },
        startOfWeek: 'monday',
    };

dateInput.dateRangePicker(configObject);
编辑1

下面是RequestSearch.php。dateRangePicker插入“2015-01-05/2015-05-09”之类的值,因此我必须制作一个处理程序,将该值分为$start\u date和$end\u date

    public function rules()
    {
        return [
            [['id', 'KP_id', 'minimal_payment', 'mover_company_id', 'manager_id', 'workers_number', 'workhours', 'payment_additional', 'payment_car', 'payment_sum'], 'integer'],
            [['request_date', 'payment_type', 'request', 'request_time', 'quantity', 'request_type', 'address', 'status', 'customer_id', 'comment',], 'safe'],
        ];
    }

 $query->andFilterWhere([
        'id' => $this->id,
        ...

    ]);

    if ( ! is_null($this->request_date) && strpos($this->request_date, '/') !== false ) { 
        list($start_date, $end_date) = explode('/', $this->request_date);
        $query->andFilterWhere(['between', 'request_date', $start_date, $end_date]);
        $this->request_date = null;
    } else {
        $query->andFilterWhere(['request_date' => $this->request_date,]);
    }

看起来我使用的datepicker插件使用val()或类似的东西插入了输入值,它不会触发正确的gridview筛选所需的“更改”事件。为输入添加了.trigger('change'),现在一切正常。我使用的插件的脚本如下:

var dateInput = $("[name='RequestSearch[request_date]']");
dateInput.dateRangePicker();
dateInput.bind('datepicker-closed', function(){
    dateInput.trigger('change');
})

RequestSearch类的Show me rules()函数可能是
request\u date
在itI中没有大量赋值,我认为这是预期的行为。如果您的筛选器是文本框,则在您通过按enter键实际提交表单之前,不会提交表单。为什么这个自定义输入会有任何不同?尝试使用
form.submit()
将处理程序附加到
datePeriodPicker
输入的
onChange
事件。@Beowulfenator但其他文本字段筛选器在更改其输入后立即应用。点击“输入”按钮,我们的光标将被移出。对不起,你是对的,他们是这样的。那么我猜您的日期字段的
change
事件具有正确的句柄,但不会因为日期选择器出现问题而被触发。@Beowulfenator我找到了解决方案:)