How to trigger Asp:HiddenField OnValueChanged event using JQuery?
ASP.net uses an algorithm to generate ClientID
. By default it is based on the naming container's the control is contained in successively.
It's likely the ID in generated HTML is not AuxHiddenField
but something like ctl00_AuxHiddenField
.
Either set the ClientIDMode:
<asp:HiddenField ID="AuxHiddenField" runat="server" ClientIDMode="Static" />
Or in jquery, using attirute selectors:
$('input[id$=AuxHiddenField]') // id ends with AuxHiddenField
I personnaly don't like the <%= Field.ClientID %>
way of doing this because if your javascript is in a separate file, it won't be processed by asp.net.
Further reading:
Changing programmatically a value with javascript does not fire the change
event, you have to trigger it manually:
$('input[id$=AuxHiddenField]').val("any val").change(); // or .trigger('change');
In action here.
About the ValueChanged event
Unfortunately, the HiddenField does not have the AutoPostBack
property (makes sense afterall).
I think you will have to trigger a postback programmatically after changing the value.
If you are working ajax, use __doPostBack()
, otherwise, submit your form document.forms[0].submit()
.
Another solution would be to replace the HiddenField by an invisible TextBox:
<asp:TextBox runat="server" ID="mytextbox" Value="" Style="display:none;" AutoPostBack="true" OnTextChanged="mytextbox_TextChanged"></asp:TextBox>
Changing the value programmatically will raise the event server-side.
Please note that for hiding the textbox, you should not use Visible="false
because then it is not rendered in final html, use the Style="display:none;"
property (css).
Comments
-
MichaelS over 1 year
I have this
asp:hiddenField
control:<asp:HiddenField ID="AuxHiddenField" runat="server"/>
I would like to trigger its (server side) value changed event using Jquery:
Protected Sub AuxHiddenField_Changed(ByVal sender As Object, ByVal e As System.EventArgs) Handles AuxHiddenField.ValueChanged 'some logic here End Sub
I tried:
$('#AuxHiddenField').val("Mohaha!!");
Jquery fails to find the element and nothing happens. How do I solve this?
-
MichaelS over 12 yearsThanks Didier G. But the change event you are showing is the client side input change event. I need the server side HiddenField OnValueChanged event. How can I trigger the OnValueChanged event on server side?
-
Didier Ghys over 12 yearsHm, don't recall this 'OnValueChanged' requirement. Anyway, HiddenField does not have
AutoPostBack
(makes sense). You probably would have to trigger the postback yourself with__doPostBack()
. You could also change the HiddenField for a TextField withdisplay:none
for instance. -
Devjosh about 12 years+1 for because if your javascript is in a separate file, it won't be processed by asp.net.