Why does the reset button on html forms not reset hidden fields?

Viewed 14560

I discovered something surprising:

<html>
<head>
<script type="text/javascript">
function f()
{
document.getElementById("h").value++;
document.getElementById("x").value++;
}
</script>
</head>
<body>

<form>
<input type="hidden" name="hidden" id="h" value="5"/>
<input type="text" id="x" value="5"/>
<input name='clear' type='reset' id='clear' value='Clear'>
</form>

<button type="button" onclick="f()">Increment</button>
<button type="button" onclick="alert(document.getElementById('h').value)">Show hidden</button>

</body>
</html> 

Trying this in Firefox 4.0.1, clicking clear always resets the text input to 5, but never resets the hidden field.

I (and others) did not expect this behavior at all: we expected the hidden value to get reset too!

Can anyone point to either documentation or specs that explain why the hidden input is treated differently by the reset button?

Explanations as to why such behavior is desirable are also welcome.

4 Answers

I came here because I bumped into this same issue. However, upon further reflection it is (usually) a very desired behavior.

The hidden field is most commonly used for storing information that was sent by the server when the page loaded.

Although, it can also be used by the script to enter some runtime-calculated entries, resetting hidden fields can cause trouble when not intended.

Related