| 3258 | }, |
| 3259 | |
| 3260 | testChange = function testChange( e ) { |
| 3261 | var elem = e.target, data, val; |
| 3262 | |
| 3263 | if ( !rformElems.test( elem.nodeName ) || elem.readOnly ) { |
| 3264 | return; |
| 3265 | } |
| 3266 | |
| 3267 | data = jQuery._data( elem, "_change_data" ); |
| 3268 | val = getVal(elem); |
| 3269 | |
| 3270 | // the current data will be also retrieved by beforeactivate |
| 3271 | if ( e.type !== "focusout" || elem.type !== "radio" ) { |
| 3272 | jQuery._data( elem, "_change_data", val ); |
| 3273 | } |
| 3274 | |
| 3275 | if ( data === undefined || val === data ) { |
| 3276 | return; |
| 3277 | } |
| 3278 | |
| 3279 | if ( data != null || val ) { |
| 3280 | e.type = "change"; |
| 3281 | e.liveFired = undefined; |
| 3282 | jQuery.event.trigger( e, arguments[1], elem ); |
| 3283 | } |
| 3284 | }; |
| 3285 | |
| 3286 | jQuery.event.special.change = { |
| 3287 | filters: { |