Adds live table filtering javascript snippet
This event handler updates a table's rows based on a search input value. Each change to the input will trigger a refresh of the table rows, and zebra striping is redone based on the new result set.
This commit is contained in:
		
							parent
							
								
									2f74596859
								
							
						
					
					
						commit
						08298420d6
					
				
							
								
								
									
										26
									
								
								JavaScript/live_table_filtering.js
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										26
									
								
								JavaScript/live_table_filtering.js
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,26 @@
 | 
			
		||||
document.getElementById('searchInput').addEventListener('input', function(event) {
 | 
			
		||||
    // get the query and table rows
 | 
			
		||||
    let q = this.value;
 | 
			
		||||
    let rows = document.querySelectorAll('tr.result-row');
 | 
			
		||||
    let results = 0;
 | 
			
		||||
    let odd = 1;
 | 
			
		||||
 | 
			
		||||
    // toggle the classnames to show/hide and redo zebra stripes
 | 
			
		||||
    for (var i = 0; i < rows.length; i++) {
 | 
			
		||||
        // toggle classes
 | 
			
		||||
        if (rows[i].innerText.toLowerCase().includes(q.toLowerCase())) {
 | 
			
		||||
            rows[i].className = (odd) ? 'result-row bg-gray-100 dark:bg-gray-800' : 'result-row';
 | 
			
		||||
            results = results + 1;
 | 
			
		||||
            odd = (odd) ? 0 : 1;
 | 
			
		||||
        } else {
 | 
			
		||||
            rows[i].className = 'result-row hidden';
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
        // if there are no results, show the empty message
 | 
			
		||||
        if (results == 0) {
 | 
			
		||||
            document.getElementById('noResults').classList.remove('hidden');
 | 
			
		||||
        } else {
 | 
			
		||||
            document.getElementById('noResults').classList.add('hidden');
 | 
			
		||||
        }
 | 
			
		||||
    }
 | 
			
		||||
});
 | 
			
		||||
		Loading…
	
		Reference in New Issue
	
	Block a user