diff --git a/framework/assets/yii.gridView.js b/framework/assets/yii.gridView.js index ef3a3a1ac2..1913f5ee78 100644 --- a/framework/assets/yii.gridView.js +++ b/framework/assets/yii.gridView.js @@ -50,19 +50,33 @@ return; } } - var data = $(settings.filterSelector).serialize(); - var url = settings.filterUrl; - if (url.indexOf('?') >= 0) { - url += '&' + data; - } else { - url += '?' + data; - } - window.location.href = url; + + methods.applyFilter.apply($e); + return false; }); }); }, + applyFilter: function () { + var $grid = $(this); + var settings = $grid.data('yiiGridView').settings; + var data = $(settings.filterSelector).serialize(); + var url = settings.filterUrl; + if (url.indexOf('?') >= 0) { + url += '&' + data; + } else { + url += '?' + data; + } + + $grid.find('form.gridview-filter-form').remove(); + var $form = $('').appendTo($grid); + $.each(yii.getQueryParams(url), function (name, value) { + $form.append($('').attr('name', name).val(value)); + }); + $form.submit(); + }, + setSelectionColumn: function (options) { var $grid = $(this); var data = $grid.data('yiiGridView'); diff --git a/framework/assets/yii.js b/framework/assets/yii.js index c5904a12e8..65f64f07e8 100644 --- a/framework/assets/yii.js +++ b/framework/assets/yii.js @@ -152,6 +152,19 @@ yii = (function ($) { return false; }, + getQueryParams: function (url) { + var pos = url.indexOf('?'); + if (pos < 0) { + return {}; + } + var qs = url.substring(pos + 1).split('&'); + for(var i = 0, result = {}; i < qs.length; i++){ + qs[i] = qs[i].split('='); + result[decodeURIComponent(qs[i][0])] = decodeURIComponent(qs[i][1]); + } + return result; + }, + initModule: function (module) { if (module.isActive === undefined || module.isActive) { if ($.isFunction(module.init)) { diff --git a/framework/widgets/Pjax.php b/framework/widgets/Pjax.php index 8522def1dc..26c5caef86 100644 --- a/framework/widgets/Pjax.php +++ b/framework/widgets/Pjax.php @@ -164,7 +164,7 @@ class Pjax extends Widget $view = $this->getView(); PjaxAsset::register($view); $js = "jQuery(document).pjax($linkSelector, \"#$id\", $options);"; - $js .= "jQuery(document).on('submit', $formSelector, function (event) {jQuery.pjax.submit(event, '#$id');});"; + $js .= "\njQuery(document).on('submit', $formSelector, function (event) {jQuery.pjax.submit(event, '#$id');});"; $view->registerJs($js); } }