Why can't I get the value of this hidden field?
I have a control...
<asp:HiddenField ID="HiddenFieldServerDateTime" runat="server" />
Which renders as...
<input type="hidden" name="ctl00$cph_main$HiddenFieldServerDateTime" id="ctl00_cph_main_HiddenFieldServerDateTime" value="08/01/2010 10:54:11"
Which I'm trying to get the value of using...
var serverDateTime = $("#HiddenFieldServerDateTime").attr('value');
So what's wrong?
I prefer this
var dateTime = $("[id$=_HiddenFieldServerDateTime]").val();
This will work as well by using jQuery to select all IDs that end with _HiddenFieldServerDateTime.
<input type="hidden" ID="HiddenFieldServerDateTime" runat="server" class="HiddenFieldServerDateTime" />
I know this has already been answered and resolved but here are two better (in my opinion) and simpler alternatives. If you are using .NET4 (or above) you can use ClientIDMode="Static" to force your ID to be used in the generated HTML:
which means you can do this in your JQuery:
or if you want to use the css class route then use a normal ASP:TextBox (which has a CssClass attribute) but just don't display it:
which allows you to do this:
Note that the css class you use doesn't have to be actually declared anywhere. You can just use it as a marker.
I just ran into a similar issue and my answer was to make a new control which inherits from
HiddenField
and gives it aCssClass
property:I am now able to assign a class to my hidden fields and use the class value to find the correct field on the client side.
Might also be worth noting that in my case the hidden fields are being created dynamically in code behind, the above may need some enhancments to be usable in the designer.
Hope this helps someone else along the way.
Add a class attribute ".myHiddenValue" to the tag then use
or since this will render after loading the document my advise use this
Because jQuery knows nothing about
asp:HiddenField
. It looks in the HTML structure where you have<input type="hidden" name="ctl00$cph_main$HiddenFieldServerDateTime" id="ctl00_cph_main_HiddenFieldServerDateTime" ...
. So there's no input withID= HiddenFieldServerDateTime
. There are a few ways to overcome this:Use a css selector:with the following selector:
var serverDateTime = $(".SomeStyle").val();
CssClass
is not an available class on theHiddenField
class (and it doesn't have anAttributes
collection, so you can't add it manually).Use
ClientID
property:Wrap the hidden field in something you can select: