I've messed with Danny's script pretty extensively, and I ended up solving several of the problems mentioned here before I ran into the issue of the change event not firing for the select element. I'm still looking for the fix to that one, but I thought I'd post my code that doesn't have the num-pad problem or the problem where typing beyond a find starts the search over instead of staying on the first match. It's also shorter than the original, but I removed the comments, so you'll have to do your own dirty work to make changes to it. I hope it helps someone.
The terminating expression on the for loop in the code I posted was incorrect. It should run for i < ddl.options.length, not i < ddl.options.length-1. My bad.
i < ddl.options.length, noti < ddl.options.length-1. My bad.