我已将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);
Run Code Online (Sandbox Code Playgroud)
编辑1
这是RequestSearch.php.dateRangePicker会插入类似"2015-01-05/2015-05-09"的值,因此我必须创建一个将值分为$ start_date和$ end_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,]);
}
Run Code Online (Sandbox Code Playgroud)
看起来我使用的 datepicker 插件使用 val() 或类似的东西插入了输入值,这不会触发正确的 gridview 过滤所需的“更改”事件。为输入添加了 .trigger('change') ,现在一切正常。使用我使用的插件,这是正在运行的脚本:
var dateInput = $("[name='RequestSearch[request_date]']");
dateInput.dateRangePicker();
dateInput.bind('datepicker-closed', function(){
dateInput.trigger('change');
})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
542 次 |
| 最近记录: |