How safe/reliable/cross-browser compatible is $(this)[0].defaultValue

I would appreciate some feedback regarding the use of $(this)[0].defaultValue for determining whether a textbox value has change from the original value e.g.

//keyUp event

if($(this)[0].defaultValue != $(this).val())
   //Field has been modified mark as dirty

In Chrome it seems to generate the desired output in the sense that the defaultValue is always the original value the textbox was loaded into the DOM with. However I have only recently discovered this value after crawling through DOM objects in the Chrome Dev tools looking for something completely different and I am concerned that it may come with a whole heap of problems. Additionally Google didn't turn much up which concerns me even more...

Any feedback greatly appreciated.

Cheers Rob



It seems pretty safe. i just used this fiddle: and tested it across chrome/firefox 3.6/safari 4/ ie8, they all behave the same.

It is described here: and there is no notice about compatibility issues.

It is also described here: and seems to be compatible with ie 5 and up, so i don't seem why it shouldn't be safe to use.


.defaultValue is non-standard and therefore not mentioned in any W3C draft / specifications. If you're in charge of the HTML markup being rendered, the HTML5 data- attributes seem to be a very convenient way to get the desired behavior cross-browser.

So you could render it like

<input type="text" value="foo" data-default="foo" />

jQuery will grab those data- attributes and store the part behind - as key in its data expand object for that specific node. That means you can just access those values by calling

$('input').data('default') // === 'foo'



Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.