Bug Tracker

Modify

Ticket #5997 (closed bug: patchwelcome)

Opened 3 years ago

Last modified 14 months ago

jQuery change event placed on file input inconsistent between Firefox & IE

Reported by: wbharding Owned by: john
Priority: major Milestone:
Component: event Version: 1.4.4
Keywords: neededdocs Cc:
Blocking: Blocked by:

Description

I recently upgraded to jQuery 1.4 from 1.2.x and have found that the following code, which previously worked across all browsers, no longer works seamlessly in Internet Explorer:

<form id="myform">

<input type="file">

</form>

...

$('#myform input).change(function() { alert("Someone picked a file") });

...

In Firefox, this code continues to work like it did prior to 1.4, namely, as soon as the user picks a file, the change event fires. But in IE 7 (the only IE I've tested it in) the change event no longer fires, unless/until I click inside the browser window after choosing my file. I'm guessing it has something to do with the event not firing until something (not sure what... maybe the page itself?) gets focus.

Expected behavior would be for the change event to fire immediately in IE after a file has been chosen, just as it does in FF, and it did in jQuery prior to 1.4.

Change History

comment:1 Changed 3 years ago by john

  • Owner changed from brandon to john
  • Status changed from new to assigned
  • Version changed from 1.4 to 1.4.1

Hmm, I'll have to check in to this - not sure if this is something that we tested for in the new change implementation.

comment:2 Changed 3 years ago by john

I landed a temporary fix for this:  http://github.com/jquery/jquery/commit/467063a2e25bae25adfa2e9ab789c62e241c9c56

There definitely needs to be more investigation here - the file input control behaves in a very non-traditional manner, it's not entirely clear what event(s) get triggered when it's interacted with.

comment:3 Changed 3 years ago by jitter

  • Version changed from 1.4.1 to 1.4.4
  • Milestone changed from 1.4.2 to 1.5

comment:4 Changed 3 years ago by jitter

#7544 is a duplicate of this ticket.

Adapted  test case from #7544 also some info there about IE7/8 FF 4

Last edited 3 years ago by jitter (previous) (diff)

comment:5 Changed 2 years ago by rwaldron

#7766 is a duplicate of this ticket.

comment:6 Changed 2 years ago by merge

 http://jsfiddle.net/YRuaX/1/ (bind) - work properly in ie8
 http://jsfiddle.net/YRuaX/2/ (live) - doesn't work properly in ie8

comment:7 Changed 2 years ago by dmethvin

  • Keywords needsdocs added
  • Status changed from assigned to closed
  • Resolution set to patchwelcome

The native change event doesn't bubble in IE, but we use heroic efforts to bubble a fake-change event for other input types. We aren't able to do that here which means it cannot be used in a .live() binding.

If anyone can determine a way to create a bubbled change event in IE6/7/8 please contact us and we can discuss whether the fix could be incorporated into jQuery core.

comment:8 Changed 2 years ago by addyosmani

  • Keywords neededdocs added; needsdocs removed

I've recently documented this here:  http://api.jquery.com/live/

comment:9 Changed 21 months ago by alex.turpin@…

Please follow the  bug reporting guidlines and use  jsFiddle when providing test cases and demonstrations instead of pasting the code in the ticket.

View

Add a comment

Modify Ticket

Action
as closed
Author


E-mail address and user name can be saved in the Preferences.

 
Note: See TracTickets for help on using tickets.