Progress polyfill (progress bar)

Looking for WET v3.1?

As of September 23, 2014, version 3.1 of the Web Experience Toolkit is no longer supported. The source code and documentation have been moved to the wet-boew-legacy repository.

Purpose

The HTML5 progress element displays the progress of a task. Because some browsers do not support this functionality natively, this polyfill emulates the same functionality using generic HTML and WAI-ARIA.

Examples

Value Max Result
22 100 22%
198 300 66%
500 500 100%
82%
View code

HTML

<table class="table table-striped">
	<thead>
		<tr>
			<th scope="col">Value</th>
			<th scope="col">Max</th>
			<th scope="col">Result</th>
		</tr>
	</thead>
	<tbody>
		<tr>
			<td>22</td>
			<td>100</td>
			<td><progress value="22" max="100"><span class="wb-inv">22%</span></progress></td>
		</tr>
		<tr>
			<td>198</td>
			<td>300</td>
			<td><progress value="198" max="300"><span class="wb-inv">66%</span></progress></td>
		</tr>
		<tr>
			<td>500</td>
			<td>500</td>
			<td><progress value="500" max="500"><span class="wb-inv">100%</span></progress></td>
		</tr>
		<tr>
			<td colspan="2"><button class="btn btn-default" id="updateProgress">Update</button></td>
			<td><progress id="updateTest" value="82" max="100"><span class="wb-inv">82%</span></progress></td>
		</tr>
	</tbody>
</table>

JavaScript (demo only)

(function( $, wb ) {
"use strict";

$( document ).on( "click vclick", "#updateProgress", function() {
	var $elm = $( "#updateTest" ),
		valuenow = parseInt( $elm.attr( "value" ), 10 ),
		newValue = valuenow === parseInt( $elm.attr( "max" ), 10 ) ? 0 : valuenow + 1;

	$elm
		.attr( "value", newValue )
		.find( "span" )
			.text( newValue + "%" );

	// Update the visuals
	$elm.trigger( "wb-update.wb-progress" );
});

})( jQuery, wb );
Date modified: