Commit 7d02f06e authored by John Resig's avatar John Resig

Made it so that you can't change the type of an input element, having it throw...

Made it so that you can't change the type of an input element, having it throw an exception instead (except for input elements that haven't yet been injected into the DOM). (Bug #1536)
parent 53dc6afc
......@@ -232,7 +232,7 @@ test("attr(Hash)", function() {
});
test("attr(String, Object)", function() {
expect(8);
expect(12);
var div = $("div");
div.attr("foo", "bar");
var pass = true;
......@@ -255,6 +255,28 @@ test("attr(String, Object)", function() {
ok( document.getElementById('text1').readOnly == false, 'Set readonly attribute' );
$("#name").attr('maxlength', '5');
ok( document.getElementById('name').maxLength == '5', 'Set maxlength attribute' );
reset();
var type = $("#check2").attr('type');
var thrown = false;
try {
$("#check2").attr('type','hidden');
} catch(e) {
thrown = true;
}
ok( thrown, "Exception thrown when trying to change type property" );
equals( type, $("#check2").attr('type'), "Verify that you can't change the type of an input element" );
var check = document.createElement("input");
var thrown = true;
try {
$(check).attr('type','checkbox');
} catch(e) {
thrown = false;
}
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" );
});
test("attr(String, Object) - Loaded via XML document", function() {
......
......@@ -728,9 +728,15 @@ jQuery.extend({
// IE elem.getAttribute passes even for style
else if ( elem.tagName ) {
if ( value != undefined ) elem.setAttribute( name, value );
if ( value != undefined ) {
if ( name == "type" && jQuery.nodeName(elem,"input") && elem.parentNode )
throw "type property can't be changed";
elem.setAttribute( name, value );
}
if ( jQuery.browser.msie && /href|src/.test(name) && !jQuery.isXMLDoc(elem) )
return elem.getAttribute( name, 2 );
return elem.getAttribute( name );
// elem is actually elem.style ... set the style
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment