Ticket #2338 (closed bug: fixed)
jQuery.event.fix() mangles "event.which" when it == false
|Reported by:||DarkRyder||Owned by:|
The current implementation of jQuery.event.fix() uses !event.which to determine whether to alter its value, which causes it to get mangled if its value is 0:
// Add which for key events if ( !event.which && ((event.charCode || event.charCode === 0) ? event.charCode : event.keyCode) ) event.which = event.charCode || event.keyCode;
This would be a non-issue except that checking whether event.which === 0 is the only way to distinguish between certain keys in Opera (notoriously, the single-quote key and the right arrow key). Below is an implementation which corrects this problem by explicitly testing whether event.which et al. have been defined.
// Add which for key events if ( typeof event.which == "undefined" && (typeof event.charCode != "undefined" || typeof event.keyCode != "undefined") ) event.which = typeof event.charCode != "undefined" ? event.charCode : event.keyCode;
Attached are a simple test case and a diff of event.js against revision 4750.
- Status changed from new to closed
- Version changed from 1.2.3 to 1.4.2
- Resolution set to fixed
- Milestone changed from 1.2.4 to 1.4.3