Best way to track onchange as-you-type in input type="text"?
forms, html, javascript
Solution
Update:
See Another answer (2015).
Original 2009 Answer:
So, you want the `onchange` event to fire on keydown, blur, and paste? That's magic.
If you want to track changes as they type, use `"onkeydown"`. If you need to trap paste operations with the mouse, use `"onpaste"` (IE, FF3) and `"oninput"` (FF, Opera, Chrome, Safari1).
1Broken for `<textarea>` on Safari. Use `textInput` instead
Problem
In my experience, `input type="text"` `onchange` event usually occurs only after you leave (`blur`) the control. Is there a way to force browser to trigger `onchange` every time `textfield` content changes? If not, what is the most elegant way to track this “manually”? Using `onkey*` events is not reliable, since you can right-click the field and choose Paste, and this will change the field without any keyboard input. Is `setTimeout` the only way?.. Ugly :-)