I found that I’m able to make this filter javascript work for a requirement on a web page. But not part of the requirement is the input field of the keyword. I’m having difficulty removing the input field with keyword phrase and just have the words filtered only from the drop down selection. Also, when I select a “year” I would like “category” to jump back to the category value.
[quote=borrob;2287266]yes, changed it for you.
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>JS Table Filter</title>
<meta name="description" content="Client-side JavaScript table filter."/>
<meta name="keywords" content="javascript, table, filter"/>
<link href="default.css" rel="stylesheet" type="text/css" />
</head>
<body>
<script type="text/javascript">
function dog( id )
{
return document.getElementById( id );
}
function filter ()
{
var word_filter_arr = dog('phrase_filter').value.split(' ');
var year_filter = dog('year_filter').value;
var category_filter = dog('category_filter').value;
var table = dog('result_table');
var row_content;
var element_filtered = false;
var word_found = false;
var element_visible = false;
var tags;
for (var r = 1; r < table.rows.length; r++)
{
p_collection = table.rows[r].getElementsByTagName('P');
word_found = false;
for( j = 0; j < p_collection.length; j++ )
{
if( p_collection[j].className == 'tags' )
{
tags_content = p_collection[j].innerHTML;
}
}
element_visible = false;
if( word_filter_arr.length == 0 )
{
word_found = true;
}
for ( var i = 0; i < word_filter_arr.length; i++ )
{
if ( tags_content.toLowerCase().indexOf( word_filter_arr* ) >=0 )
{
word_found = true;
}
}
if( word_found && ( tags_content.toLowerCase().indexOf( year_filter ) >=0 || year_filter == -1 ) )
{
if( word_found && ( tags_content.toLowerCase().indexOf( category_filter ) >=0 || category_filter == -1 ) )
{
element_visible = true;
}
}
if( element_visible )
{
table.rows[r].style.display = 'block';
}
else
{
table.rows[r].style.display = 'none';
}
}
}
</script>
<form>
<b>Include:</b>
<input id="phrase_filter" onkeyup="filter()" type="text" />
<select onchange="filter()" id="year_filter">
<option value="-1">year</option>
<option value="2008">2008</option>
<option value="2007">2007</option>
<option value="2006">2006</option>
<option value="2005">2005</option>
</select>
<select onchange="filter()" id="category_filter">
<option value="-1">category</option>
<option value="web">web</option>
<option value="graphic">graphic</option>
<option value="print">print</option>
</select>
</form>
<div id="data_table">
<table id="result_table">
<tr>
<td>
<h2>Projects</h2>
</td>
</tr>
<tr>
<td>
<h3>Project 1</h3>
<img id="image" src="image.gif" alt="image 1"></img>
<p>Lorem ipsum dolor sit amet, habitasse varius condimentum consectetuer vitae, convallis sed dui et faucibus. Id taciti nibh, iste iaculis sed etiam nec dis, nam dapibus quis velit tristique enim. In est amet tincidunt, duis rutrum mollitia elit porta wisi. Risus mi egestas aenean wisi, cras possimus interdum a, tortor amet. Magnis eu, turpis vulputate. Nibh id. Mollis fermentum wisi mauris purus. Class donec amet, vel in, metus malesuada felis nulla. Et vehicula ac lacinia urna praesent urna.</p>
<p class="tags"><br/><b>Tags: </b><i>2007, graphic</i></p>
</td>
</tr>
<tr>
<td>
<h3>Project 2</h3>
<img id="image" src="image.gif" alt="image 2"></img>
<p>Lorem ipsum dolor sit amet, habitasse varius condimentum consectetuer vitae, convallis sed dui et faucibus. Id taciti nibh, iste iaculis sed etiam nec dis, nam dapibus quis 2005 velit tristique enim. In est amet tincidunt, duis rutrum mollitia elit porta wisi. Risus mi egestas aenean wisi, cras possimus interdum a, tortor amet. Magnis eu, turpis vulputate. Nibh id. Mollis fermentum wisi mauris purus. Class donec amet, vel in, metus malesuada felis nulla. Et vehicula ac lacinia urna praesent urna.</p>
<p class="tags"><br/><b>Tags: </b><i>2007, print</i></p>
</td>
</tr>
<tr>
<td>
<h3>Project 3</h3>
<img id="image" src="image.gif" alt="image 3"></img>
<p>Lorem ipsum dolor sit amet, habitasse varius condimentum consectetuer vitae, convallis sed dui et faucibus. Id taciti nibh, iste iaculis sed etiam nec dis, nam dapibus quis velit tristique enim. In est amet tincidunt, duis rutrum mollitia elit porta wisi. Risus mi egestas aenean wisi, cras possimus interdum a, tortor amet. Magnis eu, turpis vulputate. Nibh id. Mollis fermentum wisi mauris purus. Class donec amet, vel in, metus malesuada felis nulla. Et vehicula ac lacinia urna praesent urna.</p>
<p class="tags"><br/><b>Tags: </b><i>2007, web</i></p>
</td>
</tr>
<tr>
<td>
<h3>Project 4</h3>
<img id="image" src="image.gif" alt="image 4"></img>
<p>Lorem ipsum dolor sit amet, habitasse varius condimentum consectetuer vitae, convallis sed dui et faucibus. Id taciti nibh, iste iaculis sed etiam nec dis, nam dapibus quis velit tristique enim. In est amet tincidunt, duis rutrum mollitia elit porta wisi. Risus mi egestas aenean wisi, cras possimus interdum a, tortor amet. Magnis eu, turpis vulputate. Nibh id. Mollis fermentum wisi mauris purus. Class donec amet, vel in, metus malesuada felis nulla. Et vehicula ac lacinia urna praesent urna.</p>
<p class="tags"><br/><b>Tags: </b><i>2008, print</i></p>
</td>
</tr>
<tr>
<td>
<h3>Project 5</h3>
<img id="image" src="image.gif" alt="image 5"></img>
<p>Lorem ipsum dolor sit amet, habitasse varius condimentum consectetuer vitae, convallis sed dui et faucibus. Id taciti nibh, iste iaculis sed etiam nec dis, nam dapibus quis velit tristique enim. In est amet tincidunt, duis rutrum mollitia elit porta wisi. Risus mi egestas aenean wisi, cras possimus interdum a, tortor amet. Magnis eu, turpis vulputate. Nibh id. Mollis fermentum wisi mauris purus. Class donec amet, vel in, metus malesuada felis nulla. Et vehicula ac lacinia urna praesent urna.</p>
<p class="tags"><br/><b>Tags: </b><i>2005, web</i></p>
</td>
</tr>
</table>
</div>
</body>
</html>
you will have to keep the tags inside a <p> tag with class=‘tags’[/quote]