Opened 12 years ago
Closed 12 years ago
#9833 closed bug (wontfix)
`maxLength` property is buggy in IE8/IE9
Reported by: | mathias | Owned by: | |
---|---|---|---|
Priority: | low | Milestone: | None |
Component: | attributes | Version: | git |
Keywords: | Cc: | addyosmani | |
Blocked by: | Blocking: |
Description (last modified by )
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 (5)
comment:1 Changed 12 years ago by
Cc: | addyosmani added |
---|---|
Component: | unfiled → attributes |
Description: | modified (diff) |
Status: | new → open |
comment:2 Changed 12 years ago by
Description: | modified (diff) |
---|
comment:3 follow-up: 4 Changed 12 years ago by
comment:4 Changed 12 years ago by
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 12 years ago by
Priority: | undecided → low |
---|---|
Resolution: | → wontfix |
Status: | open → closed |
Seems to me this is similar to $('input').prop('placeholder'). I don't think we should ever be falling back to getAttribute with properties.
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.