2016-02-10 2 views
0

Я пытаюсь обновить сетку yii2 с помощью pjax на клавиатуре, например, по умолчанию в Yii2 поиск в сетке работает на размытие или на событие изменения.Yii2 Grid view pjax search on keypress

Что я ищу, чтобы перезаписать эту функцию при нажатии клавиши.

Любая помощь будет принята с благодарностью. Благодарю.

ответ

2

Вы должны сделать следующее:

  1. Отключить по умолчанию отправить событие и связать KeyUp события на входах фильтров.
  2. Фокус активного входа после обновления

Вот простой рабочий пример:

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(); ?> 
+0

Его прекрасно работать на первый раз, но после первого звонка нет АЯКСА срабатывает. – Sach

+0

Используете ли вы эту конструкцию $ (document) .on ('keyup', ...) или этот $ (filter_selector) .click (func() {})? –

+0

Я использовал, как вы уже упоминали в ответ. и из-за .on ('keyup', filter_selector, function() {также не будет проблемы с привязкой. – Sach