Jquery Filtering By Two Values
This time I have a problem with jQuery filtering. $( document ).ready(function() { $('#search').keyup(function() { var s = new RegExp(this.value); $('#support
Solution 1:
The simple answer is to add :visible
to the selector:
$('select#sel-supporttask-projects').change(function() {
var s = new RegExp(this.value);
$('#support-tasks-table tbody tr:visible').each(function() {
if(s.test(this.cells[3].innerHTML)) $(this).show();
else $(this).hide();
});
});
But it highlights a design flaw: if you select a different option, you would want some answers that were previously invisible to become visible.
Essentially, you need to have a searchParameters
class that includes both search filters:
var searchParameters = {
supportTask: null,
searchRegex: null
};
function shouldRowBeVisible(row) {
if(searchParameters.supportTask) {
if(!(searchParameters.supportTask.test(row.cells[3].innerHTML))) {
return false;
}
}
if(searchParameters.searchRegex) {
if(!(searchParameters.searchRegex.test(row.cells[3].innerHTML))) {
return false;
}
}
return true;
}
function updateVisibility() {
$('#support-tasks-table tbody tr').each(function() {
if(shouldRowBeVisible(this) {
$(this).show();
} else {
$(this).hide();
}
});
}
$('#search').keyup(function() {
searchParameters.searchRegex = new RegExp(this.value);
updateVisibility();
});
$('select#sel-supporttask-projects').change(function() {
searchParameters.supportTask = new RegExp(this.value);
updateVisibility();
});
Post a Comment for "Jquery Filtering By Two Values"