Okay, I think I figured it out. My console log was highlighting an error such that if my .match statement did not find any matches, it would return null, thus a null.length was invalid.
So, I took the .match arguments outside of the initial if statement, and instead added a series of if statements such that:
// count blasts
if (box.match(/8/g) !== null) {
var _blast = box.match(/8/g).length;
var _blast_pct = (_blast / len) * 100;
$('#bl_num').val(_blast);
$('#bl_pct').val(_blast_pct);
}
and so on for each keypress match.
Now, the boxes populate in realtime.
see here: http://jsfiddle.net/xpMTE/1/