Bug Tracker

Modify

Ticket #9833 (closed bug: wontfix)

Opened 23 months ago

Last modified 19 months ago

`maxLength` property is buggy in IE8/IE9

Reported by: mathias Owned by:
Priority: low Milestone: None
Component: attributes Version: git
Keywords: Cc: addyosmani
Blocking: Blocked by:

Description (last modified by mathias) (diff)

IE≤8 has a .maxlength property on <textarea> elements instead of .maxLength. IE9 is even funnier and has none of these properties (!). Looks like we’re forced to fall back to .getAttribute() for that browser — I can’t think of any other solution.

propFix in jQuery maps $(el).prop('maxlength') to el.maxLength but that fails in IE8.

Test case:  http://jsfiddle.net/mathias/Vc9ap/ tests $(el).prop('maxlength'), $(el).prop('maxLength'), and el.maxlength.

It should say 42,42,undefined. Results:

  • IE8: undefined,undefined,42
  • IE9: undefined,undefined,undefined (WTF)
  • IE10 and others get it right.

In my code, I’m using something like el.maxLength || el.maxlength || el.getAttribute('maxlength') now. It seems jQuery should do the same.

Change History

comment:1 Changed 23 months ago by mathias

  • Cc addyosmani added
  • Status changed from new to open
  • Component changed from unfiled to attributes
  • Description modified (diff)

comment:2 Changed 23 months ago by mathias

  • Description modified (diff)

comment:3 follow-up: ↓ 4 Changed 23 months ago by jdalton

MSDN suggests maxLength is not supported on TEXTAREA's yet:  http://msdn.microsoft.com/en-us/library/ms534157(v=vs.85).aspx

IE9 is behaving more like other browsers by not automagically creating a property for unknown attributes. Besides the prop access issue you will have the max length not enforced. I don't think it falls on to jQuery to create fallbacks for HTML5 support.

comment:4 in reply to: ↑ 3 Changed 23 months ago by mathias

Replying to jdalton:

MSDN suggests maxLength is not supported on TEXTAREA's yet:  http://msdn.microsoft.com/en-us/library/ms534157(v=vs.85).aspx

FWIW, here’s the bug for that:  https://connect.microsoft.com/IE/feedback/details/679494/respect-maxlength-for-textarea-elements

IE9 is behaving more like other browsers by not automagically creating a property for unknown attributes. Besides the prop access issue you will have the max length not enforced. I don't think it falls on to jQuery to create fallbacks for HTML5 support.

I agree, but since jQuery already maps .prop('maxlength') to .prop('maxLength') it might make sense to add a fallback to .getAttribute('maxlength') so getting the property still works.

comment:5 Changed 19 months ago by timmywil

  • Priority changed from undecided to low
  • Status changed from open to closed
  • Resolution set to wontfix

Seems to me this is similar to $('input').prop('placeholder'). I don't think we should ever be falling back to getAttribute with properties.

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.