Event for form element changes (onvaluechanged)

The onchange event is only fired when an element loses focus.  This
optimization may have made sense when Javascript engines were so slow that
running scripts on each input was a bad idea, but it's a hassle now.  Many
interfaces today update as the user types.

This requires jumping some hoops, since there's no way to catch everything
that might change an input box.  Even if you watch onkeypress, oncut and
onpaste, you'll miss things like Chrome's clear-input button.  (WebKit also
doesn't fire onkeypress consistently.)  The only reliable option is to set a
repeating timer to check the value continuously, which is wasteful.

A "valuechanged" event should be fired after the value changes for any
reason.  To handle multiple items changing at once (radio boxes,
form.reset()), it should be async.  (This name makes the most sense for text
inputs, but the event should apply to the same elements that onchange does.

(This differs from textinput.  textinput is only fired when text is entered,
not when it's removed; textinput is fired before the value changes, not
after; and textinput doesn't apply to all form inputs, just text.)

-- 
Glenn Maynard

Received on Friday, 8 April 2011 01:46:51 UTC