views:

44

answers:

3

Is there a standard way in JQUERY to (at document ready time) store the original values of the form fields on the page in order to check (later) whether the fields have truly changed or not?

Normally I will do something like this:

var NameField = $("INPUT[name='NameField']");
//Record the original value.
NameField.OriginalVal = NameField.val();

This is simple enough, but I'm wondering of there is a "Standard" way to do it.

EDIT

One added requirement that I forgot is that it needs to work for all types of form fields including select and textareas.

A: 

Another simple way is to set a boolean variable on input control's onchange event.

i.e. var isFormValueChanged = false;

$("INPUT[name='NameField']").bind("change", function()
{
       isFormValueCanged = true;
});
Dev
Thanks. This only tracks the onchange event, it doesn't actually test whether the value has changed. If the the user changes it back, we want to know if the value is the same as the original.
Tom Hubbard
+6  A: 

The default value (i.e. the value that was specified in the source code using the value attribute) is available automatically as the defaultValue property.

alert($("#myInput").defaultValue);

More info at W3Schools

This seems to be part of the JS spec since 1.0 so it's safe to use. (Reference, German only sorry)

Pekka
wow nice to know, how to use this: `$("INPUT[name='NameField']").defaultValue` ? *edi* ok thx for the edit :P
meo
@meo yup, that should work.
Pekka
+1 interesting stuff.. did not know about that at all..
Gaby
+2  A: 

There is no standard way to store original values.

jQuery does have a better way to store values than your example:

var NameField = $("INPUT[name='NameField']");
NameField.data('OriginalVal', NameField.val());
edwin