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

Answers:

Answer

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

It is described here: https://developer.mozilla.org/en/DOM/HTMLTextAreaElement and there is no notice about compatibility issues.

It is also described here: http://msdn.microsoft.com/en-us/library/ms533718(v=vs.85).aspx and seems to be compatible with ie 5 and up, so i don't seem why it shouldn't be safe to use.

Answer

.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'

Example: http://jsfiddle.net/zAuPf/

Tags

Recent Questions

Top Questions

Home Tags Terms of Service Privacy Policy DMCA Contact Us

©2020 All rights reserved.