fix for #3688, setting type attribute on button causes IE to throw error
This commit is contained in:
parent
aabf635cfe
commit
e73990a566
|
@ -1004,7 +1004,7 @@ jQuery.extend({
|
||||||
if ( name in elem && notxml && !special ) {
|
if ( name in elem && notxml && !special ) {
|
||||||
if ( set ){
|
if ( set ){
|
||||||
// We can't allow the type property to be changed (since it causes problems in IE)
|
// We can't allow the type property to be changed (since it causes problems in IE)
|
||||||
if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode )
|
if ( name == "type" && elem.nodeName.match(/(button|input)/i) && elem.parentNode )
|
||||||
throw "type property can't be changed";
|
throw "type property can't be changed";
|
||||||
|
|
||||||
elem[ name ] = value;
|
elem[ name ] = value;
|
||||||
|
|
|
@ -70,7 +70,7 @@
|
||||||
<input type="text" id="name" name="name" value="name" />
|
<input type="text" id="name" name="name" value="name" />
|
||||||
<input type="search" id="search" name="search" value="search" />
|
<input type="search" id="search" name="search" value="search" />
|
||||||
|
|
||||||
<button id="button" name="button">Button</button>
|
<button id="button" name="button" type="button">Button</button>
|
||||||
|
|
||||||
<textarea id="area1" maxlength="30">foobar</textarea>
|
<textarea id="area1" maxlength="30">foobar</textarea>
|
||||||
|
|
||||||
|
|
|
@ -463,7 +463,7 @@ test("attr(Hash)", function() {
|
||||||
});
|
});
|
||||||
|
|
||||||
test("attr(String, Object)", function() {
|
test("attr(String, Object)", function() {
|
||||||
expect(19);
|
expect(21);
|
||||||
var div = jQuery("div").attr("foo", "bar"),
|
var div = jQuery("div").attr("foo", "bar"),
|
||||||
fail = false;
|
fail = false;
|
||||||
for ( var i = 0; i < div.size(); i++ ) {
|
for ( var i = 0; i < div.size(); i++ ) {
|
||||||
|
@ -537,6 +537,16 @@ test("attr(String, Object)", function() {
|
||||||
}
|
}
|
||||||
ok( thrown, "Exception thrown when trying to change type property" );
|
ok( thrown, "Exception thrown when trying to change type property" );
|
||||||
equals( "checkbox", check.attr('type'), "Verify that you can change the type of an input element that isn't in the DOM" );
|
equals( "checkbox", check.attr('type'), "Verify that you can change the type of an input element that isn't in the DOM" );
|
||||||
|
|
||||||
|
var button = jQuery("#button");
|
||||||
|
var thrown = false;
|
||||||
|
try {
|
||||||
|
button.attr('type','submit');
|
||||||
|
} catch(e) {
|
||||||
|
thrown = true;
|
||||||
|
}
|
||||||
|
ok( thrown, "Exception thrown when trying to change type property" );
|
||||||
|
equals( "button", button.attr('type'), "Verify that you can't change the type of a button element" );
|
||||||
});
|
});
|
||||||
|
|
||||||
if ( !isLocal ) {
|
if ( !isLocal ) {
|
||||||
|
|
Loading…
Reference in a new issue