- Forms with an input that has either name="action" or name="some-other-attr-on-the-form" caused problems in IE6/7. This is fixed. - Changed check in $.attr for ret === null to typeof ret === "object" to catch any inputs that are accidentally retrieved in IE6/7, since attributes cannot be set to objects and typeof null === "object"
This commit is contained in:
parent
11cfdb2394
commit
102053abd8
3 changed files with 8 additions and 4 deletions
|
@ -320,7 +320,8 @@ jQuery.extend({
|
||||||
ret = elem.getAttribute( name );
|
ret = elem.getAttribute( name );
|
||||||
|
|
||||||
// Non-existent attributes return null, we normalize to undefined
|
// Non-existent attributes return null, we normalize to undefined
|
||||||
return ret === null || ret === "null" ?
|
// Instead of checking for null, we check for typeof object to catch inputs in IE6/7. Bug #7472
|
||||||
|
return typeof ret === "object" || ret === "null" ?
|
||||||
undefined :
|
undefined :
|
||||||
ret;
|
ret;
|
||||||
}
|
}
|
||||||
|
|
|
@ -203,6 +203,7 @@ Z</textarea>
|
||||||
<select name="D4" disabled="disabled">
|
<select name="D4" disabled="disabled">
|
||||||
<option selected="selected" value="NO">NO</option>
|
<option selected="selected" value="NO">NO</option>
|
||||||
</select>
|
</select>
|
||||||
|
<input name="id">
|
||||||
</form>
|
</form>
|
||||||
<div id="moretests">
|
<div id="moretests">
|
||||||
<form>
|
<form>
|
||||||
|
|
|
@ -69,7 +69,7 @@ test("prop(String, Object)", function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
test("attr(String)", function() {
|
test("attr(String)", function() {
|
||||||
expect(20);
|
expect(22);
|
||||||
|
|
||||||
equals( jQuery('#text1').attr('type'), "text", 'Check for type attribute' );
|
equals( jQuery('#text1').attr('type'), "text", 'Check for type attribute' );
|
||||||
equals( jQuery('#radio1').attr('type'), "radio", 'Check for type attribute' );
|
equals( jQuery('#radio1').attr('type'), "radio", 'Check for type attribute' );
|
||||||
|
@ -82,8 +82,10 @@ test("attr(String)", function() {
|
||||||
equals( jQuery('#name').attr('name'), "name", 'Check for name attribute' );
|
equals( jQuery('#name').attr('name'), "name", 'Check for name attribute' );
|
||||||
equals( jQuery('#text1').attr('name'), "action", 'Check for name attribute' );
|
equals( jQuery('#text1').attr('name'), "action", 'Check for name attribute' );
|
||||||
ok( jQuery('#form').attr('action').indexOf("formaction") >= 0, 'Check for action attribute' );
|
ok( jQuery('#form').attr('action').indexOf("formaction") >= 0, 'Check for action attribute' );
|
||||||
// Temporarily disabled. See: #4299
|
// [7472] & [3113] (form contains an input with name="action" or name="id")
|
||||||
// ok( jQuery('#form').attr('action','newformaction').attr('action').indexOf("newformaction") >= 0, 'Check that action attribute was changed' );
|
equals( jQuery('#form').attr('action','newformaction').attr('action'), 'newformaction', 'Check that action attribute was changed' );
|
||||||
|
equals( jQuery('#testForm').removeAttr('id').attr('id'), undefined, 'Test that id does not equal the input with name=id after id is removed [#7472]' );
|
||||||
|
|
||||||
equals( jQuery('#text1').attr('maxlength'), '30', 'Check for maxlength attribute' );
|
equals( jQuery('#text1').attr('maxlength'), '30', 'Check for maxlength attribute' );
|
||||||
equals( jQuery('#text1').attr('maxLength'), '30', 'Check for maxLength attribute' );
|
equals( jQuery('#text1').attr('maxLength'), '30', 'Check for maxLength attribute' );
|
||||||
equals( jQuery('#area1').attr('maxLength'), '30', 'Check for maxLength attribute' );
|
equals( jQuery('#area1').attr('maxLength'), '30', 'Check for maxLength attribute' );
|
||||||
|
|
Loading…
Reference in a new issue