mirror of
https://github.com/yiisoft/yii2.git
synced 2025-11-22 09:40:41 +08:00
make grid view filtering work.
This commit is contained in:
@@ -22,6 +22,8 @@
|
||||
};
|
||||
|
||||
var defaults = {
|
||||
filterUrl: undefined,
|
||||
filterSelector: undefined
|
||||
};
|
||||
|
||||
var methods = {
|
||||
@@ -32,6 +34,32 @@
|
||||
$e.data('yiiGridView', {
|
||||
settings: settings
|
||||
});
|
||||
|
||||
var enterPressed = false;
|
||||
$(document).on('change.yiiGridView keydown.yiiGridView', settings.filterSelector, function (event) {
|
||||
if (event.type === 'keydown') {
|
||||
if (event.keyCode !== 13) {
|
||||
return; // only react to enter key
|
||||
} else {
|
||||
enterPressed = true;
|
||||
}
|
||||
} else {
|
||||
// prevent processing for both keydown and change events
|
||||
if (enterPressed) {
|
||||
enterPressed = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
var data = $(settings.filterSelector).serialize();
|
||||
var url = settings.filterUrl;
|
||||
if (url.indexOf('?') >= 0) {
|
||||
url += '&' + data;
|
||||
} else {
|
||||
url += '?' + data;
|
||||
}
|
||||
window.location.href = url;
|
||||
return false;
|
||||
});
|
||||
});
|
||||
},
|
||||
|
||||
@@ -74,5 +102,38 @@
|
||||
return this.data('yiiGridView');
|
||||
}
|
||||
};
|
||||
|
||||
var enterPressed = false;
|
||||
|
||||
var filterChanged = function (event) {
|
||||
if (event.type === 'keydown') {
|
||||
if (event.keyCode !== 13) {
|
||||
return; // only react to enter key
|
||||
} else {
|
||||
enterPressed = true;
|
||||
}
|
||||
} else {
|
||||
// prevent processing for both keydown and change events
|
||||
if (enterPressed) {
|
||||
enterPressed = false;
|
||||
return;
|
||||
}
|
||||
}
|
||||
var data = $(settings.filterSelector).serialize();
|
||||
if (settings.pageVar !== undefined) {
|
||||
data += '&' + settings.pageVar + '=1';
|
||||
}
|
||||
if (settings.enableHistory && settings.ajaxUpdate !== false && window.History.enabled) {
|
||||
// Ajaxify this link
|
||||
var url = $('#' + id).yiiGridView('getUrl'),
|
||||
params = $.deparam.querystring($.param.querystring(url, data));
|
||||
|
||||
delete params[settings.ajaxVar];
|
||||
window.History.pushState(null, document.title, decodeURIComponent($.param.querystring(url.substr(0, url.indexOf('?')), params)));
|
||||
} else {
|
||||
$('#' + id).yiiGridView('update', {data: data});
|
||||
}
|
||||
return false;
|
||||
};
|
||||
})(window.jQuery);
|
||||
|
||||
|
||||
Reference in New Issue
Block a user