Вы должны сделать следующее:
- Отключить по умолчанию отправить событие и связать KeyUp события на входах фильтров.
- Фокус активного входа после обновления
Вот простой рабочий пример:
var input;
var submit_form = false;
var filter_selector = '#grid-id-filters input';
$("body").on('beforeFilter', "#grid-id" , function(event) {
return submit_form;
});
$("body").on('afterFilter', "#grid-id" , function(event) {
submit_form = false;
});
$(document)
.off('keydown.yiiGridView change.yiiGridView', filter_selector)
.on('keyup', filter_selector, function() {
input = $(this).attr('name');
if(submit_form === false) {
submit_form = true;
$("#grid-id").yiiGridView("applyFilter");
}
})
.on('pjax:success', function() {
var i = $("[name='"+input+"']");
var val = i.val();
i.focus().val(val);
});
Вид:
<?php \yii\widgets\Pjax::begin(['id' => 'pjax-id']) ?>
<?= GridView::widget([
'id' => 'grid-id',
'dataProvider' => $dataProvider,
'filterModel' => $filterModel,
'columns' => [
'id',
'title'
]
]);?>
<?php \yii\widgets\Pjax::end(); ?>
Его прекрасно работать на первый раз, но после первого звонка нет АЯКСА срабатывает. – Sach
Используете ли вы эту конструкцию $ (document) .on ('keyup', ...) или этот $ (filter_selector) .click (func() {})? –
Я использовал, как вы уже упоминали в ответ. и из-за .on ('keyup', filter_selector, function() {также не будет проблемы с привязкой. – Sach