I'm sure you're aware that changing the HiddenField will not post back automatically. Instead, it calls ValueChanged method when one of the server control post back.
Here is how you test - you can change the hidden field value at client side. Then click PostBack button to post back to server. HF1_ValueChanged will fire if hidden field is changed.
ASPX
<asp:HiddenField runat="server" ID="HF1" Value="1"
OnValueChanged="HF1_ValueChanged" />
<div id="button">Click this text to change Hidden Field</div><br/>
<asp:Button runat="server" ID="Button1" OnClick="Button1_Click"
Text="PostBack"/><br/>
<script src="/Scripts/jquery-1.8.2.js"></script>
<script>
$(document).ready(function() {
$("#button").click(function () {
$("#<%= HF1.ClientID %>").val("2");
alert("HF has new value: " + $("#<%= HF1.ClientID %>").val());
});
});
</script>
Code Behind
protected void HF1_ValueChanged(object sender, EventArgs e)
{
// This method should be called
// only if hidden field is changed at client side.
}
protected void Button1_Click(object sender, EventArgs e)
{
}