make grid view filtering work.

This commit is contained in:
Qiang Xue
2013-10-05 21:56:06 -04:00
parent 057050f8a3
commit cf9104f7fd
2 changed files with 95 additions and 1 deletions

View File

@@ -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);