2012-01-18 15 views
20

Mam dwie strony. Z pierwszej strony otwieram modal z zapytaniem, które zawiera wartość nazwy klienta. Następnie używam tego, aby ustawić ukryte pole modalu, które się otworzyło.Uzyskaj wartość asp: HiddenField za pomocą jQuery

Potrzebuję TextBox na nowym modalu, aby wyświetlić wartość, która została wysłana z pierwszego ekranu.

Starałem się wartość używając:

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

Ale to nie wydają się działać.

To moje ukryte pole:

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

ustawić go w kodzie tyłu na Page_Load tak:

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

Wszelkie pomysły będą mile widziane.

Odpowiedz

42

Wypróbuj jedną z poniższych

  1. Jeśli kontrola ASP.Net i javascript oba są na tej samej stronie, a następnie użyć

    var hv = $("#"+ '<%= hidClientField.ClientID %>').val(); 
    
  2. Jeśli chcesz uzyskać dostęp do sterowania od niektórych Plik JS, a następnie

    // 'id$' will cause jQuery to search control whose ID ends with 'hidClientField' 
    var hv = $('input[id$=hidClientField]').val(); 
    
  3. Możesz użyć selektora nazwy klasy, aby osiągnąć to samo. Sprawdź podobne pytanie pod adresem this.

W asp.net, identyfikator kontroli jest zmanipulowany. Z tego powodu twój kod nie działa.

Mam nadzieję, że to zadziała.

+1

IMO, ten sposób działania nie powinien być używany, ponieważ gdy kod js jest w zewnętrznym pliku .js, '<%...%>' nie zostanie przeanalizowane. –

+0

+1 masz to prawo. Aktualizowałem moją odpowiedź na to :) –

7

zapomniałeś # w wybieraka, aby wybrać przez ID:

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

Chociaż asp.net generuje identyfikator oparty na pojemnikach nazewnictwa tak może skończyć się z identyfikatorem jak ctl1$hidClientField. Następnie można użyć "atrybut kończy" selektora:

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

sprawdzić dokumentację o jQuery selectors

3

Ponieważ jQuery wie nic o asp:HiddenField. Wygląda w strukturze HTML, gdzie masz <input type="hidden" name="ctl00$cph_main$HiddenFieldServerDateTime" id="ctl00_cph_main_HiddenFieldServerDateTime" .... Więc nie ma danych wejściowych z ID= HiddenFieldServerDateTime. Istnieje kilka sposobów, aby rozwiązać ten:

  • pomocą selektora CSS:

    <asp:HiddenField ID="HiddenFieldServerDateTime" 
           runat="server" 
           CssClass="SomeStyle" /> 
    

    z poniższego selektora: var serverDateTime = $(".SomeStyle").val();

    CssClass nie jest dostępna klasa od klasy HiddenField (i nie ma kolekcji Attributes, więc nie można jej dodać ręcznie).

  • Zastosowanie ClientID nieruchomości:

    var serverDateTime = $("#<%= HiddenFieldServerDateTime.ClientID %>").val(); 
    
  • Wrap pole ukryte w coś można wybrać:

    <div class="date-time-wrap"> 
        <asp:HiddenField ID="..." runat="server" /> 
    </div> 
    

     

    var serverDateTime = $('.date-time-wrap input[type=hidden]').val(); 
    
+0

Jak komplikować to wszystko. '<%...%>' nie będzie działać w zewnętrznych plikach javascript, a dodanie dodatkowego znacznika jest naprawdę bolesne. –

4

Użyj Selektor identyfikatora.

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

Albo

var hv = $('#<%=hidClientName.ClientID%>').val(); 
0

Jeśli używasz kontrolek Asp.net, serwer zmultuje identyfikatory kontrolne. Dodaje do identyfikatora kilka dodatkowych informacji o hierarchii drzewa sterującego. Musisz odwołać się do tego, co jest identyfikatorem acutal, który jest renderowany, co jest dostępne z właściwością ClientID na formancie (hfUser.ClientID) lub uzyskać dostęp do kontroli w inny, bardziej okrężny sposób, np. Znaleźć elementy nadrzędne kontroli, a następnie przeszukać dzieci, aby znaleźć swoją kontrolę.

Jeśli nie musisz używać kontrolki asp.net HiddenField, spróbuj użyć zwykłego starego html.

-1

Proszę spróbować tego kodu.

var hv = $("#<%= hidClientField.ClientID %>").val(); 
0

można zrobić w ten sposób

var hval = $('#<%= hdMarkupPercentage.ClientID%>').val(); 
Powiązane problemy