Получить значение asp: HiddenField с помощью jQuery - PullRequest
24 голосов
/ 18 января 2012

У меня две страницы.На первой странице я открываю модальную строку запроса, в которой хранится это значение имени клиента.Затем я использую это, чтобы установить скрытое поле на открывшемся модале.

Мне нужен TextBox на новом модале, чтобы отобразить значение, которое было отправлено с первого экрана.

Я пытался получить значение, используя:

var hv = $('hidClientField').val();`

Но, похоже, это не работает.

Это мое скрытое поле:

<asp:HiddenField ID="hidClientName" runat="server" />`

Я установил его в коде на Page_Load следующим образом:

hidClientName.Value = Request.QueryString["Client_Name"] ?? "";`

Любые идеи будут высоко оценены.

Ответы [ 8 ]

49 голосов
/ 18 января 2012

Попробуйте выполнить любое из следующих действий:

  1. Если элемент управления ASP.Net и javascript находятся на одной странице, используйте

    var hv = $("#"+ '<%= hidClientField.ClientID %>').val();
    
  2. Если вы хотите получить доступ к элементу управления из некоторого файла JS, тогда

    // 'id$' will cause jQuery to search control whose ID ends with 'hidClientField'
    var hv = $('input[id$=hidClientField]').val();
    
  3. Вы можете использовать селектор имени класса для достижения того же самого.Посмотрите этот похожий вопрос.

В asp.net идентификатор элемента управления искажен.Из-за этого ваш код не работает.

Надеюсь, это работает для вас.

7 голосов
/ 18 января 2012

Вы забыли # в своем селекторе, чтобы выбрать по идентификатору:

var hv = $('#hidClientField').val();

Хотя asp.net генерирует идентификатор на основе именованных контейнеров, поэтому у вас может получиться такой идентификатор как ctl1$hidClientField.Затем вы можете использовать селектор «атрибут заканчивается на»:

var hv = $('input[id$=hidClientField]').val();

Проверьте документацию о селекторах jQuery

5 голосов
/ 18 января 2012

Использовать селектор идентификатора.

var hv = $('#hidClientName').val();

Или

var hv = $('#<%=hidClientName.ClientID%>').val();
3 голосов
/ 18 января 2012

Потому что 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();
    
0 голосов
/ 19 июня 2018

Включите ClientIDMode = "Static" в ваш код.

var obj = $('#hidClientName').val(); <asp:HiddenField ID="hidClientName" ClientIDMode="Static" runat="server" />

Или

var obj = $('#<%=hidClientName.ClientID%>').val(); <asp:HiddenField ID="hidClientName" runat="server" />

0 голосов
/ 18 января 2012

вы можете сделать таким образом

var hval = $('#<%= hdMarkupPercentage.ClientID%>').val();
0 голосов
/ 18 января 2012

Пожалуйста, попробуйте этот код.

 var hv = $("#<%= hidClientField.ClientID %>").val();
0 голосов
/ 18 января 2012

Если вы используете элементы управления Asp.net, сервер будет управлять идентификаторами элементов управления.Он добавляет кучу посторонней информации иерархии дерева управления в идентификатор.Вам нужно сослаться на то, что этот точный идентификатор обрабатывается, что доступно со свойством ClientID в элементе управления (hfUser.ClientID), или получить доступ к своему элементу управления другим, более окольным путем, например найти родительский элемент управления, а затем выполнить поиск по его элементу.дети, чтобы найти ваш элемент управления.

Если вам не нужно использовать элемент управления asp.net HiddenField, попробуйте просто использовать обычный старый ввод HTML.

...