Получить значение asp: HiddenField с помощью jQuery
У меня две страницы. На первой странице я открываю модальную версию с помощью запроса, содержащего это значение имени клиента. Затем я использую это, чтобы установить скрытое поле на открывшемся модале.
Мне нужен TextBox для нового модального отображения, чтобы отобразить значение, которое было отправлено с первого экрана.
Я попытался получить значение, используя:
var hv = $('hidClientField').val();`
Но это не работает.
Это мое скрытое поле:
<asp:HiddenField ID="hidClientName" runat="server" />`
Я установил его в код позади на странице_Load следующим образом:
hidClientName.Value = Request.QueryString["Client_Name"] ?? "";`
Любые идеи будут высоко оценены.
Ответы
Ответ 1
Попробуйте выполнить любое из следующих
-
Если ASP.Net-контроль и javascript находятся на одной странице, используйте
var hv = $("#"+ '<%= hidClientField.ClientID %>').val();
-
Если вы хотите получить доступ к элементу управления из некоторого JS файла, то
// 'id$' will cause jQuery to search control whose ID ends with 'hidClientField'
var hv = $('input[id$=hidClientField]').val();
-
Вы можете использовать селектор имен классов для достижения того же. Проверьте этот аналогичный вопрос.
В asp.net управляющий идентификатор искажен. Из-за этого ваш код не работает.
Надеюсь, это сработает для вас.
Ответ 2
Вы забыли #
в своем селекторе выбрать по ID:
var hv = $('#hidClientField').val();
Хотя asp.net генерирует идентификатор на основе контейнеров с именами, поэтому вы можете получить идентификатор, например ctl1$hidClientField
. Затем вы можете использовать "атрибут заканчивается с" селектором:
var hv = $('input[id$=hidClientField]').val();
Проверьте документацию о селекторах jQuery
Ответ 3
Использовать селектор идентификаторов.
var hv = $('#hidClientName').val();
или
var hv = $('#<%=hidClientName.ClientID%>').val();
Ответ 4
Потому что jQuery ничего не знает о asp:HiddenField
. Он выглядит в структуре HTML, где у вас есть <input type="hidden" name="ctl00$cph_main$HiddenFieldServerDateTime" id="ctl00_cph_main_HiddenFieldServerDateTime" ...
. Таким образом, нет ввода с ID= HiddenFieldServerDateTime
. Есть несколько способов преодолеть это:
-
Используйте селектор css:
<asp:HiddenField ID="HiddenFieldServerDateTime"
runat="server"
CssClass="SomeStyle" />
со следующим селектором: var serverDateTime = $(".SomeStyle").val();
CssClass
не является доступным классом класса HiddenField
(и он не имеет Attributes
, поэтому вы не можете добавить его вручную).
-
Используйте свойство ClientID
:
var serverDateTime = $("#<%= HiddenFieldServerDateTime.ClientID %>").val();
-
Оберните скрытое поле в том, что вы можете выбрать:
<div class="date-time-wrap">
<asp:HiddenField ID="..." runat="server" />
</div>
var serverDateTime = $('.date-time-wrap input[type=hidden]').val();
Ответ 5
Если вы используете элементы управления Asp.net, сервер будет блокировать идентификаторы элементов управления. Он добавляет кучу информации иерархической иерархии управления в идентификатор. Вам нужно указать, что этот acutal id - это получение рендеринга, доступное с свойством ClientID в элементе управления (hfUser.ClientID) или доступ к вашему элементу управления другим, более обходным путем, например, поиск родительского элемента управления, а затем поиск его детей, чтобы найти свой контроль.
Если вам не нужно использовать элемент управления asp.net HiddenField, попробуйте использовать обычный старый html-ввод.
Ответ 6
вы можете сделать таким образом
var hval = $('#<%= hdMarkupPercentage.ClientID%>').val();
Ответ 7
Пожалуйста, попробуйте этот код.
var hv = $("#<%= hidClientField.ClientID %>").val();