jQuery Character Table
The other day I was looking for the HTML code for the ⌘ (in case you can't see it, that's the command key symbol), found in mac keyboards. It was not the first time I was looking for the HTML code for one of those funky characters. I remember having a hard time trying to represent some Math symbols, like sums and integral equations from my college Calculus days.
I thought this would be a nice opportunity to create a small jQuery sample that renders a range (or ranges) of HTML characters along with their codes.
I started with a simple HTML page, leaving all the JavaScript in an external file.
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>HTML Characters</title>
<meta http-equiv="Content-Type"
content="text/html; charset=utf-8">
<script type="text/javascript"
src="jquery-1.2.6.js"></script>
<script type="text/javascript"
src="char-table.js"></script>
</head>
<body>
From (hex): <input id="range_from" type="text" /> <br/>
To (hex): <input id="range_to" type="text" /> <br/>
<input type="button" value="Load" id="btnLoad" />
<input type="button" value="Load Example" id="btnLoadEx" />
<input type="button" value="Load Keyboard Symbols"
onclick="CHARTABLE.loadKeyboardSymbols();" />
<table id="char_table" border="1" />
</body>
</html>
Here's the JavaScript in the file char-table.js.
$(function(){
//here we put everything that will run when the page is ready
$('#btnLoad').click(function(){
// notice how we get the value of the input fields using val()
// notice how to parse hex numbers in JS
var from = parseInt($('#range_from').val(), 16);
var to = parseInt($('#range_to').val(), 16);
CHARTABLE.loadRange(from, to);
});
$('#btnLoadEx').click(function(){
//setting the value of each input field
$('#range_from').val('2190');
$('#range_to').val('2195');
//fire the click event of the Load button
$('#btnLoad').click();
});
});
// the CHARTABLE object acts as a namespace
var CHARTABLE = {
loadRanges: function() {
this.clearTable();
for(var i=0; i<arguments.length; i++) {
this.appendRange(
parseInt(arguments[i][0], 16),
parseInt(arguments[i][1], 16)
);
}
},
loadRange: function(from, to) {
this.clearTable();
this.appendRange(from, to);
},
clearTable: function(){
//the html() function is how we replace the innerHTML with jQuery
$('#char_table').
html('<tr><th>Character</th><th>Code</th></tr>');
},
appendRange: function(from, to){
//we can create stand alone DOM elements with $()
var tbody = $('<tbody/>');
for(var i=from; i<=to; i++) {
//notice how we can convert a number to hex
$('<tr>').
append('<td>&#x' + i.toString(16) + ';</td>').
append('<td>&#x' + i.toString(16) + ';</td>').
appendTo(tbody);
}
//adding the tbody to the table at the end
// renders faster than adding each row to
// the table as we go
$('#char_table').append(tbody);
},
loadKeyboardSymbols: function(){
this.loadRanges(
['21e7', '21e7'],
['21a9', '21a9'],
['2303', '2305'],
['2318', '2318'],
['2324', '2327'],
['232b', '232b'],
['2190', '2198'],
['21de', '21df'],
['21e4', '21e9']
);
}
};
Now enter the range from 2100 to 2400 and stare at a whole bunch of characters that can become useful in some situations.
Note: The characters don't render equally in IE and Firefox, but a large number of them render just fine in both browsers.