【发布时间】:2015-10-23 05:22:15
【问题描述】:
我已将 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_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,]);
}
【问题讨论】:
-
RequestSearch类的Show me rules()函数可能是
request_date在里面没有大量赋值 -
我认为这是预期的行为。如果您的过滤器是一个文本框,则在您按回车键实际提交之前不会提交表单。为什么这个自定义输入会有所不同?尝试将带有
form.submit()的处理程序附加到datePeriodPicker输入的onChange事件。 -
@Beowulfenator 但其他文本字段过滤器在更改其输入后立即应用。点击进入我们的点击光标。 .
-
对不起,你是对的,他们确实如此。然后我猜你的日期字段的
change事件有正确的句柄,但由于你的日期选择器有问题而没有被解雇。 -
@Beowulfenator 我找到了解决方案:)