diff --git a/src/core.js b/src/core.js index 0ebc61df..39aa65be 100644 --- a/src/core.js +++ b/src/core.js @@ -1042,7 +1042,8 @@ jQuery.extend({ if ( name == "type" && jQuery.nodeName( elem, "input" ) && elem.parentNode ) throw "type property can't be changed"; - elem.setAttribute( name, value ); + // convert the value to a string (all browsers do this but IE) see #1070 + elem.setAttribute( name, "" + value ); } if ( jQuery.browser.msie && /href|src/.test( name ) && !jQuery.isXMLDoc( elem ) ) diff --git a/test/unit/core.js b/test/unit/core.js index e71de2db..f77d1f89 100644 --- a/test/unit/core.js +++ b/test/unit/core.js @@ -276,7 +276,7 @@ test("attr(Hash)", function() { }); test("attr(String, Object)", function() { - expect(13); + expect(16); var div = $("div"); div.attr("foo", "bar"); var pass = true; @@ -302,6 +302,14 @@ test("attr(String, Object)", function() { $("#name").attr('maxLength', '10'); ok( document.getElementById('name').maxLength == '10', 'Set maxlength attribute' ); + // for #1070 + $("#name").attr('someAttr', '0'); + equals( $("#name").attr('someAttr'), '0', 'Set attribute to a string of "0"' ); + $("#name").attr('someAttr', 0); + equals( $("#name").attr('someAttr'), 0, 'Set attribute to the number 0' ); + $("#name").attr('someAttr', 1); + equals( $("#name").attr('someAttr'), 1, 'Set attribute to the number 1' ); + reset(); var type = $("#check2").attr('type');